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
- ToolStripRendererSwitcher.cs
- GlobalId.cs
- TimerEventSubscriptionCollection.cs
- DocumentSequenceHighlightLayer.cs
- PagedControl.cs
- SubMenuStyleCollectionEditor.cs
- RawStylusSystemGestureInputReport.cs
- ObjectDisposedException.cs
- CachedCompositeFamily.cs
- NavigationHelper.cs
- SQLByteStorage.cs
- NamespaceQuery.cs
- HostedHttpRequestAsyncResult.cs
- TransformerConfigurationWizardBase.cs
- TextParaClient.cs
- XmlIncludeAttribute.cs
- FixedTextBuilder.cs
- NotSupportedException.cs
- TreeView.cs
- SqlMethods.cs
- MarkupProperty.cs
- MissingMethodException.cs
- ThicknessAnimationUsingKeyFrames.cs
- MergePropertyDescriptor.cs
- WebUtil.cs
- SafeWaitHandle.cs
- PersianCalendar.cs
- CodeGenerator.cs
- EventRouteFactory.cs
- BinarySerializer.cs
- Wildcard.cs
- UrlPropertyAttribute.cs
- XmlHierarchyData.cs
- CoreChannel.cs
- ListViewGroup.cs
- OutputCacheSettings.cs
- QueryCursorEventArgs.cs
- RegularExpressionValidator.cs
- ObjectCloneHelper.cs
- ResourcePermissionBase.cs
- TextStore.cs
- SHA384.cs
- CharAnimationBase.cs
- CustomAttributeFormatException.cs
- BaseParagraph.cs
- SplineQuaternionKeyFrame.cs
- SecurityDescriptor.cs
- WebPartDisplayModeCollection.cs
- ProgramPublisher.cs
- X509Certificate2.cs
- HtmlPanelAdapter.cs
- ConfigXmlElement.cs
- DataColumnMapping.cs
- SrgsElementList.cs
- TemplateBindingExpression.cs
- BinaryCommonClasses.cs
- TimeStampChecker.cs
- BamlRecordWriter.cs
- AsyncCodeActivityContext.cs
- DataGridViewRowPrePaintEventArgs.cs
- Vars.cs
- DBAsyncResult.cs
- IndexedGlyphRun.cs
- TypeLibConverter.cs
- ActiveXContainer.cs
- iisPickupDirectory.cs
- SettingsPropertyValue.cs
- ReadWriteObjectLock.cs
- CornerRadius.cs
- QuaternionAnimationUsingKeyFrames.cs
- DesignerSerializationVisibilityAttribute.cs
- LocalTransaction.cs
- DefaultHttpHandler.cs
- HttpWriter.cs
- TagPrefixAttribute.cs
- SqlBuilder.cs
- GuidelineSet.cs
- InstanceDataCollectionCollection.cs
- BinaryObjectReader.cs
- arc.cs
- WebPartEditorOkVerb.cs
- InputProcessorProfilesLoader.cs
- AvTraceDetails.cs
- MsdtcClusterUtils.cs
- RenderCapability.cs
- SqlXmlStorage.cs
- InstanceStoreQueryResult.cs
- PanelStyle.cs
- LogSwitch.cs
- StringPropertyBuilder.cs
- BehaviorService.cs
- _SpnDictionary.cs
- MeshGeometry3D.cs
- RouteParameter.cs
- WebPartConnectionsCancelVerb.cs
- PropertyEmitter.cs
- ParsedAttributeCollection.cs
- mediaclock.cs
- ScrollChrome.cs
- ImmutableObjectAttribute.cs