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
- TableColumnCollection.cs
- RelatedImageListAttribute.cs
- StylusPointPropertyId.cs
- TextBlockAutomationPeer.cs
- DataGridViewRowsAddedEventArgs.cs
- DataGridTextBox.cs
- XmlIlGenerator.cs
- CodeDomConfigurationHandler.cs
- TypeConverterHelper.cs
- Normalization.cs
- PrimitiveCodeDomSerializer.cs
- ProtectedConfigurationSection.cs
- BuildProviderCollection.cs
- FontUnitConverter.cs
- Event.cs
- CompositionTarget.cs
- Point4D.cs
- WmiEventSink.cs
- SHA256CryptoServiceProvider.cs
- WebBrowsableAttribute.cs
- WpfXamlLoader.cs
- DataServiceContext.cs
- Page.cs
- EdmScalarPropertyAttribute.cs
- Rect.cs
- _SslState.cs
- HttpGetClientProtocol.cs
- Stopwatch.cs
- PermissionSet.cs
- Zone.cs
- LocalizedNameDescriptionPair.cs
- TypedDataSourceCodeGenerator.cs
- WindowsGraphics2.cs
- SerializationAttributes.cs
- Convert.cs
- _AutoWebProxyScriptEngine.cs
- SecurityValidationBehavior.cs
- DynamicResourceExtension.cs
- WebEvents.cs
- UTF8Encoding.cs
- XmlSchemaException.cs
- BitHelper.cs
- OracleCommand.cs
- AspProxy.cs
- SqlCommand.cs
- CodeTypeOfExpression.cs
- SmiRecordBuffer.cs
- recordstatescratchpad.cs
- XmlChoiceIdentifierAttribute.cs
- XamlPoint3DCollectionSerializer.cs
- TextChangedEventArgs.cs
- PathFigure.cs
- TemplateColumn.cs
- SimpleLine.cs
- InspectionWorker.cs
- SelectionRangeConverter.cs
- RequestDescription.cs
- X509InitiatorCertificateServiceElement.cs
- FilterInvalidBodyAccessException.cs
- SerializerWriterEventHandlers.cs
- SchemaNamespaceManager.cs
- MachineKeyConverter.cs
- ImportStoreException.cs
- ToolStripItemRenderEventArgs.cs
- EnumBuilder.cs
- TraceContextRecord.cs
- PropertyEntry.cs
- DictionaryBase.cs
- GroupJoinQueryOperator.cs
- ToolStripKeyboardHandlingService.cs
- HtmlInputHidden.cs
- PropertyStore.cs
- WindowsFormsHost.cs
- EnvironmentPermission.cs
- PartialTrustHelpers.cs
- HttpFormatExtensions.cs
- Underline.cs
- XmlByteStreamWriter.cs
- ConvertEvent.cs
- CodeVariableDeclarationStatement.cs
- OracleRowUpdatingEventArgs.cs
- ApplicationInfo.cs
- StackBuilderSink.cs
- TimeSpanStorage.cs
- StorageComplexTypeMapping.cs
- AssemblyCollection.cs
- PreviewControlDesigner.cs
- ObjectToIdCache.cs
- MasterPageCodeDomTreeGenerator.cs
- IisTraceWebEventProvider.cs
- XmlUtilWriter.cs
- SamlAuthorityBinding.cs
- KeyEventArgs.cs
- EntityTemplateFactory.cs
- PerformanceCounterPermissionEntry.cs
- IntranetCredentialPolicy.cs
- DesignTimeVisibleAttribute.cs
- ScrollProviderWrapper.cs
- StateChangeEvent.cs
- DPCustomTypeDescriptor.cs