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
- JoinTreeNode.cs
- DescendentsWalkerBase.cs
- SerialPinChanges.cs
- XmlEntityReference.cs
- ProxyElement.cs
- WCFServiceClientProxyGenerator.cs
- StylusPlugin.cs
- GregorianCalendar.cs
- ForeignConstraint.cs
- TextBoxAutoCompleteSourceConverter.cs
- DbConnectionInternal.cs
- UnsafeNativeMethods.cs
- DataSourceConverter.cs
- RectangleConverter.cs
- NativeMethods.cs
- DataViewListener.cs
- DateTimeOffset.cs
- TraceUtility.cs
- ClientBuildManagerCallback.cs
- DrawToolTipEventArgs.cs
- Literal.cs
- util.cs
- PieceNameHelper.cs
- NameTable.cs
- Activator.cs
- StateDesigner.LayoutSelectionGlyph.cs
- IsolatedStorageFilePermission.cs
- Nullable.cs
- XmlImplementation.cs
- SmiRequestExecutor.cs
- StreamingContext.cs
- CompareInfo.cs
- Animatable.cs
- EncoderParameters.cs
- Sequence.cs
- TextTreeInsertUndoUnit.cs
- Internal.cs
- PageSettings.cs
- RedirectionProxy.cs
- RichTextBox.cs
- TreeNodeMouseHoverEvent.cs
- PerformanceCounterPermissionEntryCollection.cs
- CollectionsUtil.cs
- ProcessStartInfo.cs
- EmptyEnumerator.cs
- StylusLogic.cs
- PolyLineSegment.cs
- MD5CryptoServiceProvider.cs
- TextDecorationCollection.cs
- WpfKnownMemberInvoker.cs
- Monitor.cs
- RequestTimeoutManager.cs
- WriteTimeStream.cs
- ValidationEventArgs.cs
- LayoutEngine.cs
- Helpers.cs
- TableLayoutRowStyleCollection.cs
- DataContext.cs
- XamlPoint3DCollectionSerializer.cs
- SecurityElement.cs
- SessionStateModule.cs
- PathSegmentCollection.cs
- DbConnectionHelper.cs
- QueryableFilterUserControl.cs
- RtfControls.cs
- HttpCacheVaryByContentEncodings.cs
- ProfessionalColors.cs
- DataRelationCollection.cs
- SettingsBase.cs
- RegistryPermission.cs
- ImageSource.cs
- TextFormatter.cs
- EventSetterHandlerConverter.cs
- Shared.cs
- WaveHeader.cs
- CryptoHelper.cs
- cookiecollection.cs
- StylusSystemGestureEventArgs.cs
- RemotingServices.cs
- DesignerPerfEventProvider.cs
- Configuration.cs
- HttpStaticObjectsCollectionBase.cs
- GenericTextProperties.cs
- ToolBarButton.cs
- DataServiceException.cs
- SecurityManager.cs
- SchemeSettingElementCollection.cs
- ReferenceSchema.cs
- GPRECTF.cs
- PrivilegedConfigurationManager.cs
- ThrowHelper.cs
- RelationshipSet.cs
- CompoundFileIOPermission.cs
- ListItemsCollectionEditor.cs
- XmlSchemaValidator.cs
- XmlDataDocument.cs
- WebPartConnectionsDisconnectVerb.cs
- EventEntry.cs
- GenericAuthenticationEventArgs.cs
- SupportingTokenSecurityTokenResolver.cs