Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Compiler / TypeSystem / CodeDomLoader.cs / 1305376 / CodeDomLoader.cs
namespace System.Workflow.ComponentModel.Compiler { using System; using System.CodeDom; using System.Collections; using System.Collections.Generic; using System.Reflection; using System.Diagnostics; internal class CodeDomLoader: IDisposable { private TypeProvider typeProvider = null; private CodeCompileUnit codeCompileUnit = null; private Listtypes = new List (); internal CodeDomLoader(TypeProvider typeProvider, CodeCompileUnit codeCompileUnit) { this.typeProvider = typeProvider; this.codeCompileUnit = codeCompileUnit; AddTypes(); } internal void Refresh(EventHandler refresher) { RemoveTypes(); refresher(this.typeProvider, EventArgs.Empty); AddTypes(); } private void AddTypes() { if (this.typeProvider != null && this.types != null) { this.types.Clear(); foreach (CodeNamespace codeNamespace in this.codeCompileUnit.Namespaces) { foreach (CodeTypeDeclaration codeTypeDeclaration in codeNamespace.Types) { // Look for partial type string typename = Helper.EnsureTypeName(codeTypeDeclaration.Name); if(codeNamespace.Name.Length > 0) typename = (Helper.EnsureTypeName(codeNamespace.Name) + "." + typename); DesignTimeType partialType = this.typeProvider.GetType(typename, false) as DesignTimeType; if ( partialType == null ) { partialType = new DesignTimeType(null, codeTypeDeclaration.Name, codeNamespace.Imports, codeNamespace.Name, this.typeProvider); this.types.Add(partialType); this.typeProvider.AddType(partialType); } partialType.AddCodeTypeDeclaration(codeTypeDeclaration); } } Queue nestedQueue = new Queue(this.types); while (nestedQueue.Count != 0) { Type type = nestedQueue.Dequeue() as Type; if(type.DeclaringType != null) this.types.Add(type); foreach (Type nestedType2 in type.GetNestedTypes(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) nestedQueue.Enqueue(nestedType2); } } } private void RemoveTypes() { if (this.typeProvider != null && this.types != null) { this.typeProvider.RemoveTypes(this.types.ToArray()); this.types.Clear(); } } #region IDisposable Members public void Dispose() { RemoveTypes(); this.typeProvider = null; this.types = null; } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel.Compiler { using System; using System.CodeDom; using System.Collections; using System.Collections.Generic; using System.Reflection; using System.Diagnostics; internal class CodeDomLoader: IDisposable { private TypeProvider typeProvider = null; private CodeCompileUnit codeCompileUnit = null; private List types = new List (); internal CodeDomLoader(TypeProvider typeProvider, CodeCompileUnit codeCompileUnit) { this.typeProvider = typeProvider; this.codeCompileUnit = codeCompileUnit; AddTypes(); } internal void Refresh(EventHandler refresher) { RemoveTypes(); refresher(this.typeProvider, EventArgs.Empty); AddTypes(); } private void AddTypes() { if (this.typeProvider != null && this.types != null) { this.types.Clear(); foreach (CodeNamespace codeNamespace in this.codeCompileUnit.Namespaces) { foreach (CodeTypeDeclaration codeTypeDeclaration in codeNamespace.Types) { // Look for partial type string typename = Helper.EnsureTypeName(codeTypeDeclaration.Name); if(codeNamespace.Name.Length > 0) typename = (Helper.EnsureTypeName(codeNamespace.Name) + "." + typename); DesignTimeType partialType = this.typeProvider.GetType(typename, false) as DesignTimeType; if ( partialType == null ) { partialType = new DesignTimeType(null, codeTypeDeclaration.Name, codeNamespace.Imports, codeNamespace.Name, this.typeProvider); this.types.Add(partialType); this.typeProvider.AddType(partialType); } partialType.AddCodeTypeDeclaration(codeTypeDeclaration); } } Queue nestedQueue = new Queue(this.types); while (nestedQueue.Count != 0) { Type type = nestedQueue.Dequeue() as Type; if(type.DeclaringType != null) this.types.Add(type); foreach (Type nestedType2 in type.GetNestedTypes(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) nestedQueue.Enqueue(nestedType2); } } } private void RemoveTypes() { if (this.typeProvider != null && this.types != null) { this.typeProvider.RemoveTypes(this.types.ToArray()); this.types.Clear(); } } #region IDisposable Members public void Dispose() { RemoveTypes(); this.typeProvider = null; this.types = null; } #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
- OrderedHashRepartitionEnumerator.cs
- MenuAutomationPeer.cs
- ADRoleFactoryConfiguration.cs
- QilTargetType.cs
- PropertyDescriptorCollection.cs
- LoadMessageLogger.cs
- SoapObjectWriter.cs
- FixedSOMFixedBlock.cs
- BitStream.cs
- TransactionProtocolConverter.cs
- EventHandlersStore.cs
- RoleServiceManager.cs
- Size3D.cs
- Binding.cs
- LinearQuaternionKeyFrame.cs
- CodeTypeReferenceCollection.cs
- ScriptDescriptor.cs
- MethodImplAttribute.cs
- Events.cs
- AutomationPropertyInfo.cs
- EventSourceCreationData.cs
- SvcFileManager.cs
- ChannelBinding.cs
- FileClassifier.cs
- WizardSideBarListControlItemEventArgs.cs
- AppSettingsReader.cs
- UidManager.cs
- XmlSchemas.cs
- IndependentlyAnimatedPropertyMetadata.cs
- OdbcEnvironment.cs
- TextBoxDesigner.cs
- WhitespaceRule.cs
- DataServiceQueryException.cs
- TemplateKeyConverter.cs
- ServiceSecurityContext.cs
- MultipleViewPatternIdentifiers.cs
- ParameterReplacerVisitor.cs
- ScriptResourceAttribute.cs
- XmlHierarchicalEnumerable.cs
- ManagementQuery.cs
- UserNameSecurityTokenAuthenticator.cs
- CommandDevice.cs
- NumericExpr.cs
- FormViewCommandEventArgs.cs
- BufferAllocator.cs
- IconConverter.cs
- remotingproxy.cs
- ADMembershipUser.cs
- SimpleHandlerFactory.cs
- TerminatorSinks.cs
- FunctionDetailsReader.cs
- CacheSection.cs
- ColorBlend.cs
- RTLAwareMessageBox.cs
- UnionCodeGroup.cs
- ReferencedAssemblyResolver.cs
- InternalConfigEventArgs.cs
- BooleanConverter.cs
- VersionUtil.cs
- EntityRecordInfo.cs
- CommonXSendMessage.cs
- WaitForChangedResult.cs
- ProviderCollection.cs
- BitmapEffectInputConnector.cs
- ActivityPreviewDesigner.cs
- DesignerProperties.cs
- SchemaNotation.cs
- SystemIPv6InterfaceProperties.cs
- InterleavedZipPartStream.cs
- MailHeaderInfo.cs
- SecurityDocument.cs
- RSACryptoServiceProvider.cs
- CodeComment.cs
- AttributeProviderAttribute.cs
- RemoveStoryboard.cs
- VirtualizingStackPanel.cs
- webproxy.cs
- ColumnMapProcessor.cs
- XmlElementElementCollection.cs
- CustomAttributeFormatException.cs
- ServiceDeploymentInfo.cs
- ConfigXmlComment.cs
- HotSpotCollection.cs
- DataSourceCollectionBase.cs
- ThemeInfoAttribute.cs
- XPathNodeList.cs
- GenerateTemporaryAssemblyTask.cs
- XmlCompatibilityReader.cs
- InheritanceAttribute.cs
- StringFunctions.cs
- XmlSchemaAny.cs
- DisplayMemberTemplateSelector.cs
- QilList.cs
- DetailsViewInsertEventArgs.cs
- InternalPermissions.cs
- ActivityBuilderHelper.cs
- ChildTable.cs
- DebugView.cs
- MissingFieldException.cs
- DLinqColumnProvider.cs