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
- OdbcConnectionString.cs
- XmlUnspecifiedAttribute.cs
- SiteMapDataSource.cs
- DynamicResourceExtensionConverter.cs
- DictionaryMarkupSerializer.cs
- FileCodeGroup.cs
- SettingsSavedEventArgs.cs
- GridViewCancelEditEventArgs.cs
- AppDomainGrammarProxy.cs
- WebPartHelpVerb.cs
- XmlWriterTraceListener.cs
- Misc.cs
- Avt.cs
- ParagraphResult.cs
- DataGrid.cs
- ExtentJoinTreeNode.cs
- String.cs
- ListCommandEventArgs.cs
- COM2IDispatchConverter.cs
- DocumentEventArgs.cs
- SmtpNetworkElement.cs
- RequestCacheValidator.cs
- XmlSignificantWhitespace.cs
- PublisherIdentityPermission.cs
- DragDropHelper.cs
- XmlSchemaAppInfo.cs
- ToolBarButtonDesigner.cs
- OdbcUtils.cs
- ListView.cs
- KeySpline.cs
- ExceptionUtil.cs
- ExecutedRoutedEventArgs.cs
- xml.cs
- ModelVisual3D.cs
- DbDataSourceEnumerator.cs
- CodeAssignStatement.cs
- TaiwanLunisolarCalendar.cs
- ActionNotSupportedException.cs
- SiteMapDataSourceView.cs
- FileAuthorizationModule.cs
- SizeIndependentAnimationStorage.cs
- ServiceProviders.cs
- ConfigurationCollectionAttribute.cs
- WebPartEditorCancelVerb.cs
- hwndwrapper.cs
- RangeValueProviderWrapper.cs
- LinqDataSourceInsertEventArgs.cs
- PathSegment.cs
- CommentEmitter.cs
- Assembly.cs
- SoundPlayer.cs
- SecurityContext.cs
- Missing.cs
- FieldNameLookup.cs
- CodeIndexerExpression.cs
- SubMenuStyleCollection.cs
- BitFlagsGenerator.cs
- StorageComplexPropertyMapping.cs
- PeerToPeerException.cs
- DesigntimeLicenseContextSerializer.cs
- DataGridRelationshipRow.cs
- TextTreeRootNode.cs
- PageTrueTypeFont.cs
- EntityProviderServices.cs
- ProxyWebPart.cs
- EntityContainerEntitySet.cs
- XPathNavigatorKeyComparer.cs
- StatusBar.cs
- WebWorkflowRole.cs
- DiscoveryExceptionDictionary.cs
- precedingsibling.cs
- UnsafeNativeMethods.cs
- EnumerableCollectionView.cs
- Console.cs
- Native.cs
- ImageConverter.cs
- ColumnTypeConverter.cs
- PeerConnector.cs
- SoapEnumAttribute.cs
- RegisteredArrayDeclaration.cs
- BigInt.cs
- TypeReference.cs
- StrokeNodeData.cs
- IdentityHolder.cs
- WorkflowOwnershipException.cs
- NativeMethods.cs
- _ConnectionGroup.cs
- DataGridPagerStyle.cs
- RotationValidation.cs
- COM2ExtendedBrowsingHandler.cs
- CodeArgumentReferenceExpression.cs
- ContentOperations.cs
- ReaderContextStackData.cs
- InlineUIContainer.cs
- PropertyValueChangedEvent.cs
- FocusManager.cs
- SettingsProviderCollection.cs
- HtmlElement.cs
- Clipboard.cs
- SqlTrackingService.cs