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
- ObjectIDGenerator.cs
- ContentType.cs
- ResolveRequestResponseAsyncResult.cs
- TcpHostedTransportConfiguration.cs
- HtmlTableRowCollection.cs
- HashStream.cs
- XmlElementList.cs
- MetaTableHelper.cs
- VisualTarget.cs
- ApplicationFileParser.cs
- DynamicValidatorEventArgs.cs
- WebPartCatalogCloseVerb.cs
- LogWriteRestartAreaAsyncResult.cs
- QueueProcessor.cs
- hwndwrapper.cs
- NullRuntimeConfig.cs
- ECDiffieHellman.cs
- XmlEntityReference.cs
- TypeDescriptor.cs
- XhtmlConformanceSection.cs
- TypeUsageBuilder.cs
- CompositeCollectionView.cs
- DefaultTypeArgumentAttribute.cs
- Triangle.cs
- FontConverter.cs
- AppDomainManager.cs
- QuaternionValueSerializer.cs
- BulletChrome.cs
- SqlWebEventProvider.cs
- StringStorage.cs
- HwndSourceParameters.cs
- CreateUserWizardDesigner.cs
- TextEditorContextMenu.cs
- SrgsGrammarCompiler.cs
- FrameworkElementFactoryMarkupObject.cs
- StorageFunctionMapping.cs
- ReferenceEqualityComparer.cs
- ViewEventArgs.cs
- Internal.cs
- DataGridViewRowHeaderCell.cs
- SqlSelectStatement.cs
- ExtentJoinTreeNode.cs
- Query.cs
- SecurityIdentifierConverter.cs
- OleDbFactory.cs
- EditorPartCollection.cs
- GenericNameHandler.cs
- Cloud.cs
- EndEvent.cs
- BitmapEffectRenderDataResource.cs
- invalidudtexception.cs
- DeflateStream.cs
- Mouse.cs
- ObjectDataSourceWizardForm.cs
- RowParagraph.cs
- ServerTooBusyException.cs
- XmlTypeMapping.cs
- ColorKeyFrameCollection.cs
- ValidationSummary.cs
- ExpressionEvaluator.cs
- CatalogPartChrome.cs
- DataGridViewColumnHeaderCell.cs
- ProviderUtil.cs
- LogWriteRestartAreaState.cs
- DeviceContexts.cs
- RadialGradientBrush.cs
- UnsafeNativeMethodsTablet.cs
- NotifyParentPropertyAttribute.cs
- ListView.cs
- DesignerWidgets.cs
- EncryptedPackage.cs
- Vector3D.cs
- WebPartConnectionsCancelVerb.cs
- TextDecorationLocationValidation.cs
- CompositeDesignerAccessibleObject.cs
- RuleRefElement.cs
- KeyManager.cs
- HttpClientCredentialType.cs
- JsonGlobals.cs
- UrlAuthFailedErrorFormatter.cs
- LoginName.cs
- RuntimeHelpers.cs
- SafeFileMappingHandle.cs
- TextReader.cs
- DeclarativeCatalogPart.cs
- RuleAttributes.cs
- ListViewGroup.cs
- SmiRequestExecutor.cs
- ConstraintCollection.cs
- XmlWrappingReader.cs
- MessageTraceRecord.cs
- SystemResourceKey.cs
- GrammarBuilderWildcard.cs
- TrackingParameters.cs
- UnsafeNativeMethodsTablet.cs
- MenuRendererStandards.cs
- ToolStripContextMenu.cs
- EdmComplexPropertyAttribute.cs
- Help.cs
- ContainerUIElement3D.cs