Code:
/ 4.0 / 4.0 / 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. 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
- ShapingEngine.cs
- X509ChainElement.cs
- ContextTokenTypeConverter.cs
- _MultipleConnectAsync.cs
- PaintValueEventArgs.cs
- srgsitem.cs
- RSACryptoServiceProvider.cs
- ConfigXmlCDataSection.cs
- XsltInput.cs
- DbSourceCommand.cs
- ComponentDispatcher.cs
- DefinitionBase.cs
- ObjectStateEntryDbDataRecord.cs
- XmlSchemaFacet.cs
- CoreSwitches.cs
- ConfigurationPermission.cs
- Registration.cs
- SessionParameter.cs
- ConstructorNeedsTagAttribute.cs
- ResolvedKeyFrameEntry.cs
- ContextQuery.cs
- KnownTypeHelper.cs
- CompilerHelpers.cs
- SystemIPv6InterfaceProperties.cs
- AuthenticationModuleElementCollection.cs
- SizeAnimationClockResource.cs
- ScriptControl.cs
- TableItemPattern.cs
- BitmapCacheBrush.cs
- GAC.cs
- AdornerLayer.cs
- SoapIgnoreAttribute.cs
- UpdateManifestForBrowserApplication.cs
- SoapSchemaMember.cs
- xsdvalidator.cs
- X500Name.cs
- HttpClientChannel.cs
- ErrorWebPart.cs
- PriorityQueue.cs
- Effect.cs
- StrokeSerializer.cs
- ApplicationSecurityInfo.cs
- SafeMILHandle.cs
- x509store.cs
- MetadataItemCollectionFactory.cs
- BaseValidator.cs
- TableLayoutColumnStyleCollection.cs
- WmlMobileTextWriter.cs
- SortKey.cs
- WebProxyScriptElement.cs
- Transform3D.cs
- SqlDataSourceSummaryPanel.cs
- SqlProcedureAttribute.cs
- SafeSystemMetrics.cs
- HtmlInputPassword.cs
- Margins.cs
- TextEditorTyping.cs
- StructuredProperty.cs
- X509SecurityTokenAuthenticator.cs
- SessionEndingEventArgs.cs
- HTTPNotFoundHandler.cs
- BadImageFormatException.cs
- HtmlDocument.cs
- SimpleTextLine.cs
- PropertyRecord.cs
- HttpCookieCollection.cs
- CancellationState.cs
- TextElementCollectionHelper.cs
- DataBoundControl.cs
- _NegoStream.cs
- ObjectSet.cs
- coordinator.cs
- SqlClientMetaDataCollectionNames.cs
- MediaContextNotificationWindow.cs
- RuntimeCompatibilityAttribute.cs
- CompatibleComparer.cs
- TextModifier.cs
- Label.cs
- MsmqOutputMessage.cs
- BindStream.cs
- SourceFileBuildProvider.cs
- XmlNodeReader.cs
- EntityTemplateFactory.cs
- EntityDataSourceView.cs
- SingleKeyFrameCollection.cs
- SafeCryptContextHandle.cs
- LinkLabel.cs
- DbProviderFactoriesConfigurationHandler.cs
- OutputCacheSettingsSection.cs
- EntityFrameworkVersions.cs
- ToolStripPanelRow.cs
- LayoutTable.cs
- FontUnit.cs
- InputLanguageManager.cs
- TextTreeInsertElementUndoUnit.cs
- WorkflowCreationContext.cs
- StrokeNodeData.cs
- DefinitionBase.cs
- FixedElement.cs
- CodeLinePragma.cs