Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / SynchronizationHandlesCodeDomSerializer.cs / 1305376 / SynchronizationHandlesCodeDomSerializer.cs
namespace System.Workflow.ComponentModel.Serialization
{
using System;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Workflow.ComponentModel.Compiler;
using System.Collections;
using System.Collections.Specialized;
using System.Collections.Generic;
// This serializer will serialize any ICollection object into code statements that constructs the collection.
// The default serializer serializes the collection as resource because ICollection is serializable.
// We originally add this serializer to deal with the SynchronizationHandles property on SynchronizationScopeActivity.
// It was a problem because this serializer will be invoked for any property of ICollection type. Now I've
// made this generic enough to be used by any such properties.
internal sealed class SynchronizationHandlesCodeDomSerializer : CodeDomSerializer
{
public override object Serialize(IDesignerSerializationManager manager, object obj)
{
if (manager == null)
throw new ArgumentNullException("manager");
if (obj == null)
throw new ArgumentNullException("obj");
CodeExpression retVal = null;
CodeStatementCollection statements = manager.Context[typeof(CodeStatementCollection)] as CodeStatementCollection;
System.Diagnostics.Debug.Assert(statements != null);
if (statements != null)
{
Activity activity = (Activity)manager.Context[typeof(Activity)];
CodeExpression objectExpression = SerializeToExpression(manager, activity);
ICollection handles = obj as ICollection;
if (handles == null)
throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(StringCollection).FullName), "obj");
string variableName = GetUniqueName(manager, new StringCollection());
statements.Add(new CodeVariableDeclarationStatement(obj.GetType(), variableName, new CodeObjectCreateExpression(obj.GetType())));
foreach (string handle in handles)
statements.Add(new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeVariableReferenceExpression(variableName), "Add"), new CodeExpression[] { new CodePrimitiveExpression(handle) }));
retVal = new CodeVariableReferenceExpression(variableName);
}
return retVal;
}
}
}
// 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
- OdbcEnvironmentHandle.cs
- MatrixKeyFrameCollection.cs
- AuthenticationModuleElementCollection.cs
- ImageDrawing.cs
- InternalControlCollection.cs
- PrintDialog.cs
- httpserverutility.cs
- Crc32.cs
- LineVisual.cs
- WizardPanelChangingEventArgs.cs
- TextEncodedRawTextWriter.cs
- TreeBuilderXamlTranslator.cs
- ExceptionCollection.cs
- TableParagraph.cs
- WsatConfiguration.cs
- XhtmlBasicLabelAdapter.cs
- DateTimeUtil.cs
- TextProperties.cs
- AuthStoreRoleProvider.cs
- Attachment.cs
- OracleException.cs
- XXXOnTypeBuilderInstantiation.cs
- AssemblyInfo.cs
- KeyTimeConverter.cs
- ContainerAction.cs
- TextEditorMouse.cs
- ClientUrlResolverWrapper.cs
- WsatServiceCertificate.cs
- SessionStateItemCollection.cs
- EntityDataSourceDesignerHelper.cs
- FileChangesMonitor.cs
- ReferencedCollectionType.cs
- DropShadowBitmapEffect.cs
- RequestStatusBarUpdateEventArgs.cs
- PriorityBinding.cs
- XsdSchemaFileEditor.cs
- Sql8ExpressionRewriter.cs
- _ListenerAsyncResult.cs
- PrintDocument.cs
- BasePattern.cs
- SchemaManager.cs
- StandardToolWindows.cs
- AQNBuilder.cs
- PageAsyncTask.cs
- DocumentViewerConstants.cs
- MsmqReceiveParameters.cs
- MetafileHeaderWmf.cs
- CallbackDebugElement.cs
- ContextStack.cs
- FunctionNode.cs
- SectionUpdates.cs
- TdsParserSafeHandles.cs
- SqlDependency.cs
- WpfXamlMember.cs
- DataControlFieldCollection.cs
- ManifestResourceInfo.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- COM2IProvidePropertyBuilderHandler.cs
- XamlRtfConverter.cs
- TableRowCollection.cs
- NameValuePair.cs
- OleDbCommandBuilder.cs
- PointAnimationBase.cs
- HtmlElementErrorEventArgs.cs
- IISMapPath.cs
- DecimalAnimationUsingKeyFrames.cs
- StringOutput.cs
- AttributeInfo.cs
- Convert.cs
- MemberInitExpression.cs
- PreloadedPackages.cs
- SqlUdtInfo.cs
- SafeFileMappingHandle.cs
- AmbientLight.cs
- HyperlinkAutomationPeer.cs
- UnionCodeGroup.cs
- WebContentFormatHelper.cs
- EnumMember.cs
- BezierSegment.cs
- DataGridViewColumnConverter.cs
- SoapReflectionImporter.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- PersonalizablePropertyEntry.cs
- DiagnosticTraceSchemas.cs
- SpecularMaterial.cs
- IdentityHolder.cs
- ResourceContainer.cs
- XsdDuration.cs
- WorkflowCompensationBehavior.cs
- SystemWebExtensionsSectionGroup.cs
- TargetException.cs
- HtmlInputButton.cs
- TreeViewHitTestInfo.cs
- DefaultObjectMappingItemCollection.cs
- RegexRunnerFactory.cs
- CollectionView.cs
- basecomparevalidator.cs
- SqlAliaser.cs
- BitHelper.cs
- BinaryMessageEncoder.cs