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
- DataKeyArray.cs
- DBCommandBuilder.cs
- PointUtil.cs
- OrderByQueryOptionExpression.cs
- PenContext.cs
- EntityContainer.cs
- DataSourceControlBuilder.cs
- DataPagerField.cs
- HMACSHA384.cs
- AccessibleObject.cs
- FrameAutomationPeer.cs
- DataGridAutoFormatDialog.cs
- MessageQueueCriteria.cs
- EventData.cs
- CollaborationHelperFunctions.cs
- C14NUtil.cs
- InternalControlCollection.cs
- HttpHandlerAction.cs
- ValidatorCompatibilityHelper.cs
- ColorDialog.cs
- StretchValidation.cs
- FixedSOMPageElement.cs
- NeutralResourcesLanguageAttribute.cs
- ChangePassword.cs
- InstancePersistenceException.cs
- StrokeCollection2.cs
- SimpleBitVector32.cs
- Schema.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- PageParser.cs
- ListenDesigner.cs
- SystemWebSectionGroup.cs
- TabPage.cs
- CompositeDuplexBindingElementImporter.cs
- BitmapDecoder.cs
- TriState.cs
- WebServiceEndpoint.cs
- HTMLTagNameToTypeMapper.cs
- StrokeCollection.cs
- SimpleHandlerBuildProvider.cs
- ToolStripPanelRenderEventArgs.cs
- HttpRuntime.cs
- ContentValidator.cs
- CodeRemoveEventStatement.cs
- XsltException.cs
- WebPartAuthorizationEventArgs.cs
- ChoiceConverter.cs
- HttpTransportSecurity.cs
- RoleGroupCollection.cs
- RadioButtonBaseAdapter.cs
- BehaviorEditorPart.cs
- EventData.cs
- Psha1DerivedKeyGenerator.cs
- UserControl.cs
- MergablePropertyAttribute.cs
- HeaderUtility.cs
- RegisteredDisposeScript.cs
- VisualStateManager.cs
- PrivilegeNotHeldException.cs
- GridLengthConverter.cs
- Relationship.cs
- ExpressionNode.cs
- PrintDialogException.cs
- CultureInfoConverter.cs
- RightNameExpirationInfoPair.cs
- XmlCompatibilityReader.cs
- TextView.cs
- entitydatasourceentitysetnameconverter.cs
- TypeToken.cs
- XmlMembersMapping.cs
- XamlReaderHelper.cs
- ProxyWebPartManager.cs
- TargetControlTypeAttribute.cs
- RestClientProxyHandler.cs
- EditorPartChrome.cs
- ReflectionTypeLoadException.cs
- GlobalProxySelection.cs
- UIElement.cs
- XmlByteStreamWriter.cs
- GorillaCodec.cs
- SafeSerializationManager.cs
- ToolStripMenuItem.cs
- OdbcRowUpdatingEvent.cs
- _TLSstream.cs
- SoapIncludeAttribute.cs
- MetadataWorkspace.cs
- LabelDesigner.cs
- WebPartHeaderCloseVerb.cs
- RequiredAttributeAttribute.cs
- SharedStatics.cs
- hwndwrapper.cs
- xml.cs
- TreePrinter.cs
- SessionState.cs
- CultureTable.cs
- CreateParams.cs
- IDQuery.cs
- SecurityProtocolCorrelationState.cs
- coordinatorfactory.cs
- NameValuePermission.cs