Code:
/ 4.0 / 4.0 / 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 ICollectionobject 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. 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
- PassportAuthentication.cs
- GlyphTypeface.cs
- SHA384.cs
- TabPageDesigner.cs
- CollectionChangedEventManager.cs
- SafeEventLogReadHandle.cs
- MemberDescriptor.cs
- BinaryObjectWriter.cs
- ChangeNode.cs
- SpeechRecognizer.cs
- ProfilePropertySettingsCollection.cs
- _ProxyChain.cs
- GenerateScriptTypeAttribute.cs
- NonBatchDirectoryCompiler.cs
- ArglessEventHandlerProxy.cs
- WindowsComboBox.cs
- QueryAccessibilityHelpEvent.cs
- SecurityContextCookieSerializer.cs
- WindowsToolbarAsMenu.cs
- HTTPNotFoundHandler.cs
- DataGridViewSelectedCellCollection.cs
- AddInEnvironment.cs
- FontNamesConverter.cs
- TextPointerBase.cs
- TransformCryptoHandle.cs
- DataGridTextBox.cs
- MetadataFile.cs
- MethodAccessException.cs
- VarRefManager.cs
- CacheChildrenQuery.cs
- ThreadStartException.cs
- AnonymousIdentificationModule.cs
- AttributeQuery.cs
- DataStreamFromComStream.cs
- StandardCommands.cs
- Profiler.cs
- AlphabetConverter.cs
- XmlUtil.cs
- TokenCreationParameter.cs
- WmpBitmapEncoder.cs
- SystemKeyConverter.cs
- SamlSubject.cs
- TextEffectCollection.cs
- UnsafePeerToPeerMethods.cs
- panel.cs
- FileVersionInfo.cs
- UseLicense.cs
- BindingMAnagerBase.cs
- StringFreezingAttribute.cs
- StaticFileHandler.cs
- IDispatchConstantAttribute.cs
- MouseEvent.cs
- WebBrowserEvent.cs
- ISAPIApplicationHost.cs
- LogArchiveSnapshot.cs
- DiscardableAttribute.cs
- CatalogZone.cs
- OutputScopeManager.cs
- LoginAutoFormat.cs
- ModelFunction.cs
- CacheHelper.cs
- CompressEmulationStream.cs
- DesignConnectionCollection.cs
- AlgoModule.cs
- Vector.cs
- SettingsPropertyCollection.cs
- GridViewCellAutomationPeer.cs
- PositiveTimeSpanValidatorAttribute.cs
- DesignerActionItemCollection.cs
- PersistenceTypeAttribute.cs
- Size3DValueSerializer.cs
- StringArrayEditor.cs
- MessageContractExporter.cs
- DBPropSet.cs
- Int32AnimationBase.cs
- ParameterToken.cs
- RequestCachePolicy.cs
- MethodToken.cs
- KnownTypes.cs
- Error.cs
- OdbcPermission.cs
- ToolStripSeparatorRenderEventArgs.cs
- HttpListenerPrefixCollection.cs
- WebEvents.cs
- filewebrequest.cs
- GlobalItem.cs
- ResourcePermissionBaseEntry.cs
- BamlStream.cs
- StreamWriter.cs
- RegisteredDisposeScript.cs
- MediaScriptCommandRoutedEventArgs.cs
- ErrorFormatter.cs
- FixedDocument.cs
- FigureParagraph.cs
- SoapEnumAttribute.cs
- DataViewManagerListItemTypeDescriptor.cs
- LambdaExpression.cs
- DataSetUtil.cs
- ComEventsSink.cs
- Timer.cs