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
- DataServiceEntityAttribute.cs
- ItemCollectionEditor.cs
- Ipv6Element.cs
- GPRECT.cs
- SafeNativeMethodsMilCoreApi.cs
- FastPropertyAccessor.cs
- DbConnectionInternal.cs
- DrawingServices.cs
- CustomError.cs
- DefaultEvaluationContext.cs
- RegexParser.cs
- FlowNode.cs
- GridViewAutoFormat.cs
- UIAgentInitializationException.cs
- BackEase.cs
- XmlSchemaDatatype.cs
- MailBnfHelper.cs
- PropertyGridView.cs
- PolyBezierSegment.cs
- FontFamilyValueSerializer.cs
- HScrollProperties.cs
- EditorAttributeInfo.cs
- Model3D.cs
- CngProperty.cs
- RepeaterItem.cs
- IdleTimeoutMonitor.cs
- Vector3D.cs
- DiscoveryClient.cs
- MetadataResolver.cs
- DataGridViewTextBoxEditingControl.cs
- WorkflowRuntimeServiceElementCollection.cs
- TextHidden.cs
- PageStatePersister.cs
- TraceFilter.cs
- Error.cs
- DataObjectSettingDataEventArgs.cs
- IdentifierService.cs
- x509utils.cs
- NetPipeSectionData.cs
- MergePropertyDescriptor.cs
- LabelLiteral.cs
- BaseWebProxyFinder.cs
- ConfigXmlSignificantWhitespace.cs
- _Semaphore.cs
- UserNameSecurityToken.cs
- ComboBoxRenderer.cs
- MultipartContentParser.cs
- XomlSerializationHelpers.cs
- IPHostEntry.cs
- RootAction.cs
- Label.cs
- HeaderCollection.cs
- ActivationServices.cs
- ChainedAsyncResult.cs
- ClusterSafeNativeMethods.cs
- ZoneIdentityPermission.cs
- StopStoryboard.cs
- WebPartCatalogCloseVerb.cs
- Hyperlink.cs
- FieldMetadata.cs
- DataServiceKeyAttribute.cs
- ParsedAttributeCollection.cs
- FunctionDetailsReader.cs
- ItemsPanelTemplate.cs
- VirtualDirectoryMapping.cs
- XmlDocumentType.cs
- RoleManagerModule.cs
- AuditLogLocation.cs
- Logging.cs
- AppLevelCompilationSectionCache.cs
- parserscommon.cs
- FontWeightConverter.cs
- PublisherIdentityPermission.cs
- ConstructorBuilder.cs
- ControlPaint.cs
- RemoteWebConfigurationHost.cs
- NetSectionGroup.cs
- IMembershipProvider.cs
- DelegateHelpers.cs
- Int16Animation.cs
- SourceInterpreter.cs
- ToolStripControlHost.cs
- TitleStyle.cs
- BridgeDataRecord.cs
- Script.cs
- ApplicationServiceManager.cs
- Visitors.cs
- ConstraintStruct.cs
- ToolStripScrollButton.cs
- ProxyGenerator.cs
- WebEventCodes.cs
- BooleanAnimationUsingKeyFrames.cs
- Encoder.cs
- StrongNamePublicKeyBlob.cs
- PropertyDescriptorComparer.cs
- DataRelation.cs
- ListControl.cs
- ConnectionManagementSection.cs
- ListViewItemMouseHoverEvent.cs
- RowToParametersTransformer.cs