Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / ActivityTypeCodeDomSerializer.cs / 1305376 / ActivityTypeCodeDomSerializer.cs
namespace System.Workflow.ComponentModel.Serialization { using System; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Collections; using System.Resources; using System.Workflow.ComponentModel.Design; using System.Collections.Generic; using Microsoft.CSharp; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.CodeDom.Compiler; using System.IO; using System.Reflection; using System.Diagnostics; #region Class ActivityTypeCodeDomSerializer public class ActivityTypeCodeDomSerializer : TypeCodeDomSerializer { private static object _initMethodKey = new object(); private const string _initMethodName = "InitializeComponent"; protected override CodeMemberMethod GetInitializeMethod(IDesignerSerializationManager manager, CodeTypeDeclaration typeDecl, object value) { if (manager == null) throw new ArgumentNullException("manager"); if (typeDecl == null) throw new ArgumentNullException("typeDecl"); if (value == null) throw new ArgumentNullException("value"); CodeMemberMethod method = typeDecl.UserData[_initMethodKey] as CodeMemberMethod; if (method == null) { method = new CodeMemberMethod(); method.Name = _initMethodName; method.Attributes = MemberAttributes.Private; typeDecl.UserData[_initMethodKey] = method; // Now create a ctor that calls this method. CodeConstructor ctor = new CodeConstructor(); ctor.Attributes = MemberAttributes.Public; ctor.Statements.Add(new CodeMethodInvokeExpression(new CodeThisReferenceExpression(), _initMethodName)); typeDecl.Members.Add(ctor); } return method; } protected override CodeMemberMethod[] GetInitializeMethods(IDesignerSerializationManager manager, CodeTypeDeclaration typeDecl) { if (manager == null) throw new ArgumentNullException("manager"); if (typeDecl == null) throw new ArgumentNullException("typeDecl"); foreach (CodeTypeMember member in typeDecl.Members) { CodeMemberMethod method = member as CodeMemberMethod; // Note: the order is important here for performance! // method.Parameters causes OnMethodPopulateParameters callback and therefore it is much more // expensive than method.Name.Equals if (method != null && method.Name.Equals(_initMethodName) && method.Parameters.Count == 0) { return new CodeMemberMethod[] { method }; } } return new CodeMemberMethod[0]; } public override CodeTypeDeclaration Serialize(IDesignerSerializationManager manager, object root, ICollection members) { if (manager == null) throw new ArgumentNullException("manager"); if (root == null) throw new ArgumentNullException("root"); Activity rootActivity = root as Activity; if( rootActivity == null) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(Activity).FullName), "root"); CodeTypeDeclaration codeTypeDeclaration = base.Serialize(manager, root, members); // Emit CanModifyActivities properties CodeMemberMethod method = codeTypeDeclaration.UserData[_initMethodKey] as CodeMemberMethod; if (method != null && rootActivity is CompositeActivity) { CodeStatement[] codeStatements = new CodeStatement[method.Statements.Count]; method.Statements.CopyTo(codeStatements, 0); method.Statements.Clear(); CodeAssignStatement beginInit = new CodeAssignStatement(); beginInit.Left = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "CanModifyActivities"); beginInit.Right = new CodePrimitiveExpression(true); method.Statements.Add(beginInit); foreach (CodeStatement s in codeStatements) method.Statements.Add(s); CodeAssignStatement endInit = new CodeAssignStatement(); endInit.Left = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "CanModifyActivities"); endInit.Right = new CodePrimitiveExpression(false); method.Statements.Add(endInit); } foreach (CodeTypeMember member in codeTypeDeclaration.Members) { CodeMemberField field = member as CodeMemberField; if (field != null) { foreach(object objectActivity in members) { if(!(objectActivity is Activity)) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(Activity).FullName), "members"); Activity activity = objectActivity as Activity; if (field.Name == manager.GetName(activity) && (int)activity.GetValue(ActivityMarkupSerializer.StartLineProperty) != -1 && rootActivity.GetValue(ActivityCodeDomSerializer.MarkupFileNameProperty) != null) { // generate line pragma for fields field.LinePragma = new CodeLinePragma((string)rootActivity.GetValue(ActivityCodeDomSerializer.MarkupFileNameProperty), Math.Max((int)activity.GetValue(ActivityMarkupSerializer.StartLineProperty), 1)); } } } } return codeTypeDeclaration; } public override object Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration) { return base.Deserialize(manager, declaration); } } #endregion } // 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; using System.ComponentModel.Design.Serialization; using System.Collections; using System.Resources; using System.Workflow.ComponentModel.Design; using System.Collections.Generic; using Microsoft.CSharp; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.CodeDom.Compiler; using System.IO; using System.Reflection; using System.Diagnostics; #region Class ActivityTypeCodeDomSerializer public class ActivityTypeCodeDomSerializer : TypeCodeDomSerializer { private static object _initMethodKey = new object(); private const string _initMethodName = "InitializeComponent"; protected override CodeMemberMethod GetInitializeMethod(IDesignerSerializationManager manager, CodeTypeDeclaration typeDecl, object value) { if (manager == null) throw new ArgumentNullException("manager"); if (typeDecl == null) throw new ArgumentNullException("typeDecl"); if (value == null) throw new ArgumentNullException("value"); CodeMemberMethod method = typeDecl.UserData[_initMethodKey] as CodeMemberMethod; if (method == null) { method = new CodeMemberMethod(); method.Name = _initMethodName; method.Attributes = MemberAttributes.Private; typeDecl.UserData[_initMethodKey] = method; // Now create a ctor that calls this method. CodeConstructor ctor = new CodeConstructor(); ctor.Attributes = MemberAttributes.Public; ctor.Statements.Add(new CodeMethodInvokeExpression(new CodeThisReferenceExpression(), _initMethodName)); typeDecl.Members.Add(ctor); } return method; } protected override CodeMemberMethod[] GetInitializeMethods(IDesignerSerializationManager manager, CodeTypeDeclaration typeDecl) { if (manager == null) throw new ArgumentNullException("manager"); if (typeDecl == null) throw new ArgumentNullException("typeDecl"); foreach (CodeTypeMember member in typeDecl.Members) { CodeMemberMethod method = member as CodeMemberMethod; // Note: the order is important here for performance! // method.Parameters causes OnMethodPopulateParameters callback and therefore it is much more // expensive than method.Name.Equals if (method != null && method.Name.Equals(_initMethodName) && method.Parameters.Count == 0) { return new CodeMemberMethod[] { method }; } } return new CodeMemberMethod[0]; } public override CodeTypeDeclaration Serialize(IDesignerSerializationManager manager, object root, ICollection members) { if (manager == null) throw new ArgumentNullException("manager"); if (root == null) throw new ArgumentNullException("root"); Activity rootActivity = root as Activity; if( rootActivity == null) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(Activity).FullName), "root"); CodeTypeDeclaration codeTypeDeclaration = base.Serialize(manager, root, members); // Emit CanModifyActivities properties CodeMemberMethod method = codeTypeDeclaration.UserData[_initMethodKey] as CodeMemberMethod; if (method != null && rootActivity is CompositeActivity) { CodeStatement[] codeStatements = new CodeStatement[method.Statements.Count]; method.Statements.CopyTo(codeStatements, 0); method.Statements.Clear(); CodeAssignStatement beginInit = new CodeAssignStatement(); beginInit.Left = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "CanModifyActivities"); beginInit.Right = new CodePrimitiveExpression(true); method.Statements.Add(beginInit); foreach (CodeStatement s in codeStatements) method.Statements.Add(s); CodeAssignStatement endInit = new CodeAssignStatement(); endInit.Left = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "CanModifyActivities"); endInit.Right = new CodePrimitiveExpression(false); method.Statements.Add(endInit); } foreach (CodeTypeMember member in codeTypeDeclaration.Members) { CodeMemberField field = member as CodeMemberField; if (field != null) { foreach(object objectActivity in members) { if(!(objectActivity is Activity)) throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(Activity).FullName), "members"); Activity activity = objectActivity as Activity; if (field.Name == manager.GetName(activity) && (int)activity.GetValue(ActivityMarkupSerializer.StartLineProperty) != -1 && rootActivity.GetValue(ActivityCodeDomSerializer.MarkupFileNameProperty) != null) { // generate line pragma for fields field.LinePragma = new CodeLinePragma((string)rootActivity.GetValue(ActivityCodeDomSerializer.MarkupFileNameProperty), Math.Max((int)activity.GetValue(ActivityMarkupSerializer.StartLineProperty), 1)); } } } } return codeTypeDeclaration; } public override object Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration) { return base.Deserialize(manager, declaration); } } #endregion } // 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
- SingleKeyFrameCollection.cs
- MetadataArtifactLoaderCompositeResource.cs
- ActionMismatchAddressingException.cs
- BatchParser.cs
- CopyOnWriteList.cs
- SingleResultAttribute.cs
- ConfigurationManagerHelperFactory.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- CodeGenerator.cs
- formatter.cs
- DataTrigger.cs
- CheckoutException.cs
- PermissionSet.cs
- CapabilitiesState.cs
- WindowsFormsSynchronizationContext.cs
- ComboBoxAutomationPeer.cs
- DirtyTextRange.cs
- NameObjectCollectionBase.cs
- Parser.cs
- PageVisual.cs
- AmbiguousMatchException.cs
- DynamicHyperLink.cs
- BitStream.cs
- TemplateControlCodeDomTreeGenerator.cs
- documentation.cs
- MessageLoggingElement.cs
- DesignerInterfaces.cs
- BrowserInteropHelper.cs
- DocumentPageView.cs
- TypeResolver.cs
- BrowsableAttribute.cs
- TypedElement.cs
- CallContext.cs
- DataBoundLiteralControl.cs
- XmlSchemaSimpleContentRestriction.cs
- WebPartMenu.cs
- Int16AnimationBase.cs
- RC2CryptoServiceProvider.cs
- DataServiceHostFactory.cs
- ToolStripDropDown.cs
- EdmComplexTypeAttribute.cs
- DoubleAnimationUsingKeyFrames.cs
- DoWorkEventArgs.cs
- EncryptRequest.cs
- SafeBitVector32.cs
- WriterOutput.cs
- SimpleBitVector32.cs
- DurableInstance.cs
- StylusButtonEventArgs.cs
- Maps.cs
- ISFTagAndGuidCache.cs
- SafeFileMapViewHandle.cs
- KeyValueSerializer.cs
- ProfileEventArgs.cs
- XamlGridLengthSerializer.cs
- SessionChannels.cs
- LongValidatorAttribute.cs
- DocumentViewerHelper.cs
- Invariant.cs
- SafeReversePInvokeHandle.cs
- ArgIterator.cs
- PersistenceTypeAttribute.cs
- InternalResources.cs
- ManagementException.cs
- SecurityException.cs
- CompilerGlobalScopeAttribute.cs
- XmlDocument.cs
- GeneralTransform3DTo2DTo3D.cs
- UICuesEvent.cs
- XmlEncoding.cs
- PartialList.cs
- EpmContentSerializerBase.cs
- HtmlInputControl.cs
- DesignerLoader.cs
- categoryentry.cs
- StandardOleMarshalObject.cs
- FileSystemInfo.cs
- RtfToken.cs
- FileUtil.cs
- MultiTrigger.cs
- ProxyAttribute.cs
- DynamicILGenerator.cs
- DispatchOperation.cs
- AmbientProperties.cs
- FixedSOMSemanticBox.cs
- HttpModulesSection.cs
- PopupControlService.cs
- newinstructionaction.cs
- XmlRawWriter.cs
- TabItemWrapperAutomationPeer.cs
- Parameter.cs
- DesignerCommandAdapter.cs
- ToolbarAUtomationPeer.cs
- XmlSchemaAnnotation.cs
- MultiSelector.cs
- GradientStopCollection.cs
- DebugController.cs
- HTTPNotFoundHandler.cs
- TreeViewEvent.cs
- DbgUtil.cs