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
- SQLResource.cs
- GraphicsState.cs
- CatalogZoneAutoFormat.cs
- NamedPermissionSet.cs
- CommunicationObjectManager.cs
- MiniConstructorInfo.cs
- InputLangChangeRequestEvent.cs
- ControlBuilder.cs
- StopRoutingHandler.cs
- StateRuntime.cs
- Currency.cs
- InternalConfigSettingsFactory.cs
- BaseProcessor.cs
- EntityDataSourceChangedEventArgs.cs
- HttpCookiesSection.cs
- WorkflowOwnershipException.cs
- X509CertificateStore.cs
- SqlSelectStatement.cs
- RegexCharClass.cs
- ApplicationContext.cs
- XmlSchemaImport.cs
- BamlBinaryWriter.cs
- ContentOperations.cs
- RunWorkerCompletedEventArgs.cs
- WindowPatternIdentifiers.cs
- ClientSession.cs
- SR.cs
- ConfigurationPropertyAttribute.cs
- Size3DValueSerializer.cs
- GridViewRowPresenter.cs
- WmiEventSink.cs
- StickyNoteAnnotations.cs
- DisposableCollectionWrapper.cs
- SqlFlattener.cs
- Int32Animation.cs
- MSG.cs
- HMACSHA1.cs
- shaperfactoryquerycachekey.cs
- KeySplineConverter.cs
- xmlglyphRunInfo.cs
- DesignerActionMethodItem.cs
- SqlNotificationEventArgs.cs
- SettingsProperty.cs
- DropShadowBitmapEffect.cs
- DbReferenceCollection.cs
- XmlName.cs
- EventToken.cs
- XmlObjectSerializerReadContextComplex.cs
- SmiEventSink.cs
- FloaterBaseParaClient.cs
- CompositeTypefaceMetrics.cs
- MsmqIntegrationChannelListener.cs
- SQLString.cs
- ErrorsHelper.cs
- TypeAccessException.cs
- ArrowControl.xaml.cs
- WebBrowserEvent.cs
- BoundColumn.cs
- DataListGeneralPage.cs
- ITextView.cs
- RequestQueue.cs
- SecureStringHasher.cs
- Pointer.cs
- PolyQuadraticBezierSegment.cs
- SetIterators.cs
- Boolean.cs
- WindowCollection.cs
- DurableTimerExtension.cs
- ResourcesBuildProvider.cs
- UdpMessageProperty.cs
- _FixedSizeReader.cs
- FormatConvertedBitmap.cs
- Style.cs
- ValidatorAttribute.cs
- TableLayoutStyleCollection.cs
- UnknownBitmapDecoder.cs
- PrintDocument.cs
- MenuItemBinding.cs
- VerificationAttribute.cs
- DurationConverter.cs
- LogArchiveSnapshot.cs
- AuditLevel.cs
- SchemaImporterExtensionElementCollection.cs
- UnaryQueryOperator.cs
- CallbackDebugBehavior.cs
- SqlMethods.cs
- GlobalAllocSafeHandle.cs
- CommonObjectSecurity.cs
- ClaimComparer.cs
- PathTooLongException.cs
- DesignerValidatorAdapter.cs
- SqlMethods.cs
- SettingsAttributes.cs
- ValidatedControlConverter.cs
- login.cs
- TableItemPattern.cs
- ByeMessageApril2005.cs
- XmlAnyElementAttribute.cs
- CodeNamespaceImport.cs
- Vector3DAnimation.cs