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
- TdsParameterSetter.cs
- InputQueue.cs
- HtmlInputButton.cs
- ZoomPercentageConverter.cs
- CachedBitmap.cs
- DebuggerAttributes.cs
- VisualStyleRenderer.cs
- DesignerResources.cs
- CodeMethodMap.cs
- ComPlusThreadInitializer.cs
- JsonObjectDataContract.cs
- ComboBoxAutomationPeer.cs
- DoubleAnimationBase.cs
- SubqueryRules.cs
- XPathEmptyIterator.cs
- DbResourceAllocator.cs
- ConfigsHelper.cs
- HtmlControl.cs
- MissingMemberException.cs
- MatrixAnimationBase.cs
- QilChoice.cs
- BaseTemplateBuildProvider.cs
- ShapingWorkspace.cs
- OleDbEnumerator.cs
- ResourceBinder.cs
- SiteMapNodeCollection.cs
- RepeatInfo.cs
- DesignerObjectListAdapter.cs
- OleServicesContext.cs
- MatrixAnimationUsingPath.cs
- DataReaderContainer.cs
- ConnectionPoolManager.cs
- DesignerActionKeyboardBehavior.cs
- BrowserDefinitionCollection.cs
- Vector3DConverter.cs
- DiagnosticsConfigurationHandler.cs
- ObjectFullSpanRewriter.cs
- SelectionItemPatternIdentifiers.cs
- Pair.cs
- WebPartDisplayMode.cs
- SrgsNameValueTag.cs
- Polyline.cs
- XmlArrayItemAttributes.cs
- SecurityDescriptor.cs
- GPRECT.cs
- SmtpNetworkElement.cs
- IsolatedStorageException.cs
- CfgParser.cs
- SqlTypeSystemProvider.cs
- SmiEventSink_DeferedProcessing.cs
- WSSecurityTokenSerializer.cs
- StylusOverProperty.cs
- UpdateManifestForBrowserApplication.cs
- RangeValueProviderWrapper.cs
- ToolStripItemGlyph.cs
- Pair.cs
- Utils.cs
- ResizeBehavior.cs
- ValidationErrorCollection.cs
- XmlObjectSerializerReadContext.cs
- DockAndAnchorLayout.cs
- XamlTypeMapper.cs
- Configuration.cs
- OverflowException.cs
- CorruptingExceptionCommon.cs
- ExplicitDiscriminatorMap.cs
- PropertyItemInternal.cs
- WebBrowserHelper.cs
- UIElementAutomationPeer.cs
- ServiceModelExtensionCollectionElement.cs
- SQLBinaryStorage.cs
- HandlerElementCollection.cs
- WindowsScroll.cs
- Encoder.cs
- DecoderBestFitFallback.cs
- Message.cs
- MetadataPropertyAttribute.cs
- SQLSingle.cs
- validation.cs
- EventHandlersStore.cs
- SoapAttributeOverrides.cs
- AmbiguousMatchException.cs
- FormViewPageEventArgs.cs
- DataRelationCollection.cs
- HttpStaticObjectsCollectionBase.cs
- connectionpool.cs
- SerializationFieldInfo.cs
- AsyncCompletedEventArgs.cs
- PerformanceCounterTraceRecord.cs
- ExtensionWindowHeader.cs
- ViewBase.cs
- SerializerDescriptor.cs
- CommunicationObjectFaultedException.cs
- TimeSpanStorage.cs
- ColumnResizeUndoUnit.cs
- RequestSecurityToken.cs
- ProfilePropertyNameValidator.cs
- UTF32Encoding.cs
- EntityTypeBase.cs
- ByteStack.cs