Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / PrimitiveCodeDomSerializer.cs / 1305376 / PrimitiveCodeDomSerializer.cs
namespace System.Workflow.ComponentModel.Serialization { using System; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Collections; using System.Resources; using System.Workflow.ComponentModel.Design; using System.Collections.Generic; using Microsoft.CSharp; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.CodeDom.Compiler; using System.IO; using System.Reflection; using System.Diagnostics; #region Class PrimitiveCodeDomSerializer // work around : PD7's PrimitiveCodeDomSerializer does not handle well strings bigger than 200 characters, // we push our own version to fix it. internal class PrimitiveCodeDomSerializer : CodeDomSerializer { private static readonly string JSharpFileExtension = ".jsl"; private static PrimitiveCodeDomSerializer defaultSerializer; internal static PrimitiveCodeDomSerializer Default { get { if (defaultSerializer == null) { defaultSerializer = new PrimitiveCodeDomSerializer(); } return defaultSerializer; } } public override object Serialize(IDesignerSerializationManager manager, object value) { CodeExpression expression = new CodePrimitiveExpression(value); if (value == null || value is bool || value is char || value is int || value is float || value is double) { // work aroundf for J#, since they don't support auto-boxing of value types yet. CodeDomProvider codeProvider = manager.GetService(typeof(CodeDomProvider)) as CodeDomProvider; if (codeProvider != null && String.Equals(codeProvider.FileExtension, JSharpFileExtension)) { // See if we are boxing - if so, insert a cast. ExpressionContext cxt = manager.Context[typeof(ExpressionContext)] as ExpressionContext; //Debug.Assert(cxt != null, "No expression context on stack - J# boxing cast will not be inserted"); if (cxt != null) { if (cxt.ExpressionType == typeof(object)) { expression = new CodeCastExpression(value.GetType(), expression); expression.UserData.Add("CastIsBoxing", true); } } } return expression; } String stringValue = value as string; if (stringValue != null) { // WinWS: The commented code breaks us when we have long strings //if (stringValue.Length > 200) //{ // return SerializeToResourceExpression(manager, stringValue); //} //else return expression; } // generate a cast for non-int types because we won't parse them properly otherwise because we won't know to convert // them to the narrow form. // return new CodeCastExpression(new CodeTypeReference(value.GetType()), expression); } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpListenerRequestUriBuilder.cs
- DbProviderManifest.cs
- XPathSelfQuery.cs
- BrowserDefinition.cs
- BuildProvider.cs
- SqlParameter.cs
- PauseStoryboard.cs
- TransactionFormatter.cs
- DesignerToolboxInfo.cs
- DtdParser.cs
- DLinqAssociationProvider.cs
- DataBoundControlHelper.cs
- PersonalizationStateInfo.cs
- TraceLevelStore.cs
- NativeCppClassAttribute.cs
- _ConnectOverlappedAsyncResult.cs
- XmlLanguage.cs
- QilLoop.cs
- PrincipalPermission.cs
- CodeDOMUtility.cs
- DocumentProperties.cs
- AdapterSwitches.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- BaseValidator.cs
- DaylightTime.cs
- ClonableStack.cs
- MsmqInputSessionChannelListener.cs
- PasswordTextNavigator.cs
- DoubleAnimationUsingPath.cs
- TraceData.cs
- StreamGeometryContext.cs
- ImpersonationContext.cs
- DataGridViewCellStyle.cs
- QilXmlReader.cs
- SyncMethodInvoker.cs
- HandoffBehavior.cs
- UrlMapping.cs
- NameTable.cs
- TextTreeRootNode.cs
- FixedSOMTable.cs
- PathTooLongException.cs
- ByteStream.cs
- DependencyObjectValidator.cs
- AmbientLight.cs
- ApplicationContext.cs
- ContextProperty.cs
- WindowsContainer.cs
- ComponentChangedEvent.cs
- AmbientValueAttribute.cs
- PageSetupDialog.cs
- SpellerStatusTable.cs
- DesignerDataSchemaClass.cs
- AvTraceFormat.cs
- RepeaterItemEventArgs.cs
- DynamicUpdateCommand.cs
- FileVersion.cs
- ObjectIDGenerator.cs
- PackageRelationshipCollection.cs
- GiveFeedbackEventArgs.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- RectangleF.cs
- DockPanel.cs
- QueryContinueDragEvent.cs
- StructuralComparisons.cs
- TypefaceMetricsCache.cs
- DoubleAnimationBase.cs
- XmlSchemaImport.cs
- WebPartDescriptionCollection.cs
- Wizard.cs
- BatchWriter.cs
- OLEDB_Enum.cs
- LayoutEvent.cs
- PriorityBindingExpression.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ViewGenerator.cs
- HtmlInputPassword.cs
- CacheMode.cs
- RelationshipEndCollection.cs
- FullTextState.cs
- TreeNodeEventArgs.cs
- MachineKeySection.cs
- ResXBuildProvider.cs
- DateTimePickerDesigner.cs
- SafeProcessHandle.cs
- PenContexts.cs
- CodeDefaultValueExpression.cs
- ProcessProtocolHandler.cs
- ScriptControlDescriptor.cs
- XmlRootAttribute.cs
- XmlIlGenerator.cs
- RoutedEventArgs.cs
- DNS.cs
- SchemaManager.cs
- DocumentPageView.cs
- XmlSignificantWhitespace.cs
- ErrorTableItemStyle.cs
- webbrowsersite.cs
- FormViewModeEventArgs.cs
- SqlNodeTypeOperators.cs
- DisplayNameAttribute.cs