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 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Matrix.cs
- SQLCharsStorage.cs
- CategoryAttribute.cs
- MenuItemStyle.cs
- InputMethod.cs
- sortedlist.cs
- XPathNodeList.cs
- ListViewGroupItemCollection.cs
- WebReferencesBuildProvider.cs
- ConfigurationStrings.cs
- IntegerValidatorAttribute.cs
- UserControl.cs
- BuildProvidersCompiler.cs
- MetadataElement.cs
- MachineKeyConverter.cs
- DomainConstraint.cs
- CodeEventReferenceExpression.cs
- StretchValidation.cs
- WebHttpBehavior.cs
- XmlStreamNodeWriter.cs
- AttributeProviderAttribute.cs
- ProfileGroupSettings.cs
- PropertyPath.cs
- Attributes.cs
- ProfileParameter.cs
- DataSvcMapFileSerializer.cs
- DataServiceClientException.cs
- BoundField.cs
- RotationValidation.cs
- AnonymousIdentificationSection.cs
- ToolStripScrollButton.cs
- ToolStripPanelSelectionGlyph.cs
- FullTrustAssembly.cs
- SQLGuid.cs
- CultureNotFoundException.cs
- DispatchChannelSink.cs
- TextServicesDisplayAttributePropertyRanges.cs
- DecoderReplacementFallback.cs
- MimeXmlImporter.cs
- XmlLinkedNode.cs
- RuntimeEnvironment.cs
- XPathItem.cs
- EUCJPEncoding.cs
- Animatable.cs
- Polyline.cs
- NullableBoolConverter.cs
- XmlSchemaImport.cs
- PeerEndPoint.cs
- TransformCollection.cs
- XmlSchemaSimpleContentExtension.cs
- TimelineCollection.cs
- SqlDataSource.cs
- ConfigurationValidatorBase.cs
- PackageDigitalSignatureManager.cs
- WrappedIUnknown.cs
- SecurityElement.cs
- ProcessHost.cs
- RtfFormatStack.cs
- PageParser.cs
- ProcessRequestArgs.cs
- OSFeature.cs
- TemplatePartAttribute.cs
- UTF8Encoding.cs
- DesignerForm.cs
- ToolStripCustomTypeDescriptor.cs
- MobileUserControlDesigner.cs
- HostedImpersonationContext.cs
- SafeHandles.cs
- MulticastIPAddressInformationCollection.cs
- CustomCategoryAttribute.cs
- WeakReferenceList.cs
- ReaderWriterLockWrapper.cs
- Vertex.cs
- __ComObject.cs
- PageHandlerFactory.cs
- ConfigViewGenerator.cs
- TemplateField.cs
- VectorCollection.cs
- CursorInteropHelper.cs
- AdRotatorDesigner.cs
- Visual3D.cs
- ButtonStandardAdapter.cs
- StorageAssociationTypeMapping.cs
- LoginView.cs
- X500Name.cs
- Point3DAnimation.cs
- TextServicesManager.cs
- MultiTrigger.cs
- ByteStack.cs
- TreeViewTemplateSelector.cs
- ApplicationDirectory.cs
- Identifier.cs
- WebPartVerbsEventArgs.cs
- DataSourceXmlTextReader.cs
- ManipulationPivot.cs
- SqlError.cs
- CodeSnippetStatement.cs
- ByteViewer.cs
- ActiveXContainer.cs
- SourceLocation.cs