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
- DetailsViewDeleteEventArgs.cs
- ResourceDisplayNameAttribute.cs
- SettingsProviderCollection.cs
- PackageDigitalSignature.cs
- KnownTypes.cs
- Int64Animation.cs
- SweepDirectionValidation.cs
- DataGridViewAdvancedBorderStyle.cs
- FolderBrowserDialog.cs
- PagedDataSource.cs
- VirtualPathUtility.cs
- GatewayDefinition.cs
- HybridDictionary.cs
- SpeakInfo.cs
- ApplicationActivator.cs
- SinglePageViewer.cs
- ipaddressinformationcollection.cs
- SettingsProperty.cs
- HttpRawResponse.cs
- SimpleApplicationHost.cs
- EnumBuilder.cs
- ConfigurationStrings.cs
- SQLMoneyStorage.cs
- TextElementCollectionHelper.cs
- DataGridViewTextBoxCell.cs
- XmlSerializerSection.cs
- TextShapeableCharacters.cs
- BitmapData.cs
- DictionarySectionHandler.cs
- AppDomainUnloadedException.cs
- TrackingRecordPreFilter.cs
- LinkConverter.cs
- InvalidEnumArgumentException.cs
- QueuePathEditor.cs
- MetadataItem_Static.cs
- ProgressiveCrcCalculatingStream.cs
- XmlSchemaValidationException.cs
- BasePattern.cs
- DefaultParameterValueAttribute.cs
- FlowDocumentReader.cs
- PageHandlerFactory.cs
- _PooledStream.cs
- MsmqHostedTransportManager.cs
- ErrorTableItemStyle.cs
- TemplateControl.cs
- PathSegmentCollection.cs
- RemotingConfigParser.cs
- TimeBoundedCache.cs
- ParameterElement.cs
- ToolStripContentPanelRenderEventArgs.cs
- ConfigXmlWhitespace.cs
- PageTheme.cs
- ContainerControl.cs
- RegexBoyerMoore.cs
- ConditionCollection.cs
- BuildResult.cs
- BoolExpression.cs
- LabelDesigner.cs
- BooleanAnimationUsingKeyFrames.cs
- PropertyKey.cs
- PropertyGrid.cs
- SrgsSemanticInterpretationTag.cs
- SqlDataSourceCommandEventArgs.cs
- COM2IPerPropertyBrowsingHandler.cs
- VoiceInfo.cs
- SecuritySessionFilter.cs
- Invariant.cs
- DataTableReader.cs
- WebServiceHandlerFactory.cs
- ExtendedTransformFactory.cs
- XmlSecureResolver.cs
- TreeChangeInfo.cs
- SafeArrayTypeMismatchException.cs
- ContentDesigner.cs
- SiteMapDataSource.cs
- UnauthorizedAccessException.cs
- XmlQueryContext.cs
- DashStyle.cs
- ErrorReporting.cs
- EncoderReplacementFallback.cs
- DataGridViewRowHeaderCell.cs
- DefaultAutoFieldGenerator.cs
- DrawingCollection.cs
- PageOutputQuality.cs
- AttachedProperty.cs
- _NetRes.cs
- StatusCommandUI.cs
- Rotation3D.cs
- MobileSysDescriptionAttribute.cs
- Dispatcher.cs
- SafeUserTokenHandle.cs
- Context.cs
- LinqDataSourceValidationException.cs
- ResourceExpressionEditor.cs
- mda.cs
- WebServicesSection.cs
- AuthenticationModulesSection.cs
- NameValueConfigurationElement.cs
- SoapRpcMethodAttribute.cs
- HtmlDocument.cs