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
- SeparatorAutomationPeer.cs
- StaticContext.cs
- DeferrableContent.cs
- ServiceModelDictionary.cs
- StorageBasedPackageProperties.cs
- EntityDesignerUtils.cs
- LayoutUtils.cs
- DataGridViewCheckBoxCell.cs
- PrimaryKeyTypeConverter.cs
- EvidenceTypeDescriptor.cs
- ProcessManager.cs
- SecurityDescriptor.cs
- WindowsComboBox.cs
- AuthenticationManager.cs
- UInt32Storage.cs
- ScopedMessagePartSpecification.cs
- DataGridHelper.cs
- XmlDocumentType.cs
- BridgeDataRecord.cs
- PageContent.cs
- SystemInfo.cs
- RelationshipSet.cs
- XmlSchemaObject.cs
- ResolveNextArgumentWorkItem.cs
- ItemMap.cs
- StoragePropertyMapping.cs
- datacache.cs
- XamlGridLengthSerializer.cs
- ApplicationSecurityManager.cs
- MDIWindowDialog.cs
- HealthMonitoringSection.cs
- Properties.cs
- CreateUserErrorEventArgs.cs
- OpenTypeLayout.cs
- TableAutomationPeer.cs
- StorageBasedPackageProperties.cs
- PartitionedStream.cs
- Block.cs
- DispatcherExceptionEventArgs.cs
- AdCreatedEventArgs.cs
- RenderingEventArgs.cs
- RightsManagementEncryptionTransform.cs
- ObjectContext.cs
- ScalarType.cs
- NestedContainer.cs
- IIS7WorkerRequest.cs
- StringAttributeCollection.cs
- AmbientLight.cs
- SqlServices.cs
- Crypto.cs
- StylusPointCollection.cs
- XPathItem.cs
- precedingquery.cs
- TextEndOfParagraph.cs
- Span.cs
- TextElement.cs
- GlyphShapingProperties.cs
- Avt.cs
- ProcessHostFactoryHelper.cs
- TemplateLookupAction.cs
- SymmetricSecurityBindingElement.cs
- MULTI_QI.cs
- TlsnegoTokenAuthenticator.cs
- XPathChildIterator.cs
- Image.cs
- ListSortDescription.cs
- MsmqOutputChannel.cs
- ModelFactory.cs
- Publisher.cs
- MimeTypeAttribute.cs
- SynchronizationLockException.cs
- TableHeaderCell.cs
- TypeUtil.cs
- DependencyObject.cs
- MsmqInputChannelListener.cs
- MatrixCamera.cs
- WebPartAuthorizationEventArgs.cs
- WebCategoryAttribute.cs
- XmlReflectionImporter.cs
- HotSpot.cs
- RequestBringIntoViewEventArgs.cs
- SizeAnimationBase.cs
- ModifierKeysValueSerializer.cs
- Facet.cs
- ParseChildrenAsPropertiesAttribute.cs
- VisualBasicSettingsConverter.cs
- KeyedHashAlgorithm.cs
- HitTestFilterBehavior.cs
- EntityDataSourceView.cs
- ObjectDataSourceView.cs
- DummyDataSource.cs
- ObjectViewEntityCollectionData.cs
- Vector3DCollectionConverter.cs
- NominalTypeEliminator.cs
- DecoderNLS.cs
- TypeSystem.cs
- XmlSchemaIdentityConstraint.cs
- ColumnResizeAdorner.cs
- CodeGenerator.cs
- JsonEncodingStreamWrapper.cs