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
- SqlFacetAttribute.cs
- RouteValueDictionary.cs
- JsonObjectDataContract.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- NamespaceDecl.cs
- CodeDirectionExpression.cs
- TextRangeEditLists.cs
- ExtensionSurface.cs
- Codec.cs
- OpCellTreeNode.cs
- CompositionDesigner.cs
- CmsInterop.cs
- ServiceDefaults.cs
- wgx_commands.cs
- TextBreakpoint.cs
- WebRequestModuleElement.cs
- ClientEventManager.cs
- BevelBitmapEffect.cs
- FilteredAttributeCollection.cs
- SiteMapDataSourceDesigner.cs
- ActiveXSite.cs
- GridEntryCollection.cs
- XmlNodeWriter.cs
- CqlWriter.cs
- HostingPreferredMapPath.cs
- RuntimeResourceSet.cs
- DefaultMemberAttribute.cs
- ListSortDescription.cs
- ScriptingJsonSerializationSection.cs
- ScrollBar.cs
- Triangle.cs
- WorkflowViewStateService.cs
- ComponentConverter.cs
- WebPartDescriptionCollection.cs
- StreamingContext.cs
- CTreeGenerator.cs
- HMACSHA512.cs
- DataTableReader.cs
- TableLayoutRowStyleCollection.cs
- EllipseGeometry.cs
- PartialCachingAttribute.cs
- ExpressionEditorAttribute.cs
- PropertyEntry.cs
- EntityContainerEmitter.cs
- CachedPathData.cs
- DeleteStoreRequest.cs
- RelationshipEndMember.cs
- PrinterResolution.cs
- DocumentAutomationPeer.cs
- GetResponse.cs
- CodeMemberEvent.cs
- Range.cs
- SqlNotificationEventArgs.cs
- FormViewUpdatedEventArgs.cs
- MatrixCamera.cs
- LateBoundBitmapDecoder.cs
- CookielessData.cs
- XamlPoint3DCollectionSerializer.cs
- AppDomainManager.cs
- FilteredXmlReader.cs
- DataControlFieldCell.cs
- FontDifferentiator.cs
- ProcessHostConfigUtils.cs
- TextStore.cs
- Timeline.cs
- PersonalizableTypeEntry.cs
- TdsParserSessionPool.cs
- SessionParameter.cs
- DiscriminatorMap.cs
- PartitionedDataSource.cs
- ParameterCollection.cs
- MenuDesigner.cs
- CorrelationValidator.cs
- Rect3D.cs
- ConfigXmlComment.cs
- WeakReferenceEnumerator.cs
- PathTooLongException.cs
- DependencyPropertyAttribute.cs
- XmlnsCompatibleWithAttribute.cs
- XmlSchemaIdentityConstraint.cs
- AuthenticatedStream.cs
- MailBnfHelper.cs
- GetChildSubtree.cs
- DetailsViewUpdateEventArgs.cs
- DataFormats.cs
- SByteConverter.cs
- BuildManagerHost.cs
- DataControlFieldHeaderCell.cs
- XsdBuilder.cs
- brushes.cs
- PageParser.cs
- TraceHandler.cs
- MinimizableAttributeTypeConverter.cs
- WebScriptEndpoint.cs
- Variant.cs
- EntityDataSourceConfigureObjectContext.cs
- RoleGroup.cs
- DragStartedEventArgs.cs
- SchemaImporterExtensionElementCollection.cs
- COAUTHINFO.cs