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
- DataGridItem.cs
- RadioButtonAutomationPeer.cs
- GridViewAutomationPeer.cs
- XPathMultyIterator.cs
- ResourceAssociationSetEnd.cs
- MatrixIndependentAnimationStorage.cs
- BeginStoryboard.cs
- PrintDialog.cs
- DesignerValidationSummaryAdapter.cs
- SQLResource.cs
- CodeDirectoryCompiler.cs
- GraphicsContext.cs
- UpdateExpressionVisitor.cs
- ZipFileInfo.cs
- HttpStreamMessage.cs
- DataGridTextBox.cs
- CommandBindingCollection.cs
- ApplicationSettingsBase.cs
- HttpServerUtilityBase.cs
- BamlLocalizableResource.cs
- ControlBuilderAttribute.cs
- mactripleDES.cs
- ColorConvertedBitmapExtension.cs
- StorageAssociationTypeMapping.cs
- Method.cs
- CultureSpecificStringDictionary.cs
- InputElement.cs
- ActivityCodeDomSerializer.cs
- ImpersonationContext.cs
- DataControlButton.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- AsyncPostBackTrigger.cs
- WorkerRequest.cs
- WebControlAdapter.cs
- DataGridHeaderBorder.cs
- Group.cs
- DbgCompiler.cs
- EarlyBoundInfo.cs
- DockPanel.cs
- UrlPath.cs
- SQLBinaryStorage.cs
- CngKeyBlobFormat.cs
- XhtmlCssHandler.cs
- DbProviderFactory.cs
- EncryptedData.cs
- MergablePropertyAttribute.cs
- ProviderConnectionPoint.cs
- CompareValidator.cs
- AnnotationDocumentPaginator.cs
- FileLogRecord.cs
- TypeUtil.cs
- MissingManifestResourceException.cs
- WebServiceData.cs
- XmlBaseWriter.cs
- FactoryGenerator.cs
- EventToken.cs
- ObjectTag.cs
- WebControlParameterProxy.cs
- _UriSyntax.cs
- EventMappingSettings.cs
- DetailsViewUpdateEventArgs.cs
- EntityClientCacheEntry.cs
- PersonalizationProviderHelper.cs
- _HeaderInfoTable.cs
- ColorMap.cs
- DataGridView.cs
- BamlLocalizableResourceKey.cs
- MaterializeFromAtom.cs
- PartitionedStream.cs
- DataSourceControl.cs
- CannotUnloadAppDomainException.cs
- ToggleButtonAutomationPeer.cs
- QuinticEase.cs
- DrawingAttributesDefaultValueFactory.cs
- MimeBasePart.cs
- PtsHelper.cs
- FamilyTypefaceCollection.cs
- EntityDataSourceEntityTypeFilterItem.cs
- SrgsSemanticInterpretationTag.cs
- SetIterators.cs
- SolidColorBrush.cs
- LowerCaseStringConverter.cs
- CriticalFinalizerObject.cs
- JavaScriptObjectDeserializer.cs
- HtmlCommandAdapter.cs
- sqlcontext.cs
- ThemeableAttribute.cs
- BindableTemplateBuilder.cs
- LeaseManager.cs
- DataPagerCommandEventArgs.cs
- XPathMultyIterator.cs
- CheckBox.cs
- DataMisalignedException.cs
- DataServiceStreamProviderWrapper.cs
- FileNotFoundException.cs
- MissingMemberException.cs
- TextTreeInsertElementUndoUnit.cs
- FamilyMapCollection.cs
- NavigationWindow.cs
- SqlDataAdapter.cs