Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpWebRequestElement.cs
- ToolStripScrollButton.cs
- EntityType.cs
- SmiEventStream.cs
- ContactManager.cs
- sqlpipe.cs
- BufferModesCollection.cs
- ExpressionPrefixAttribute.cs
- TranslateTransform.cs
- TemplateKey.cs
- NameValueConfigurationCollection.cs
- FragmentQueryProcessor.cs
- AlternateViewCollection.cs
- Comparer.cs
- RenderDataDrawingContext.cs
- WebPartConnection.cs
- DirectoryObjectSecurity.cs
- EntityDataSourceContextDisposingEventArgs.cs
- StyleSheetDesigner.cs
- IsolatedStoragePermission.cs
- TextDpi.cs
- MimeAnyImporter.cs
- ProfilePropertyMetadata.cs
- X509RecipientCertificateClientElement.cs
- TypeHelpers.cs
- CustomAttributeBuilder.cs
- connectionpool.cs
- SqlException.cs
- FormatConvertedBitmap.cs
- HtmlContainerControl.cs
- PixelFormat.cs
- TemporaryBitmapFile.cs
- AudioFileOut.cs
- UnSafeCharBuffer.cs
- TrackPointCollection.cs
- SqlWriter.cs
- HelpEvent.cs
- DomainConstraint.cs
- TypedDataSetSchemaImporterExtension.cs
- MergablePropertyAttribute.cs
- UInt16Storage.cs
- Freezable.cs
- OpenTypeLayout.cs
- RelationshipConstraintValidator.cs
- WinEventHandler.cs
- CorrelationService.cs
- ComEventsHelper.cs
- ManagementNamedValueCollection.cs
- SqlRewriteScalarSubqueries.cs
- ProfileInfo.cs
- Int32Collection.cs
- DataTemplateKey.cs
- NameValueSectionHandler.cs
- SQLDoubleStorage.cs
- EdmProperty.cs
- DesignerDeviceConfig.cs
- SqlFileStream.cs
- HeaderedItemsControl.cs
- TextEvent.cs
- WeakReferenceEnumerator.cs
- ServerProtocol.cs
- ItemAutomationPeer.cs
- SrgsItemList.cs
- RunInstallerAttribute.cs
- PenThreadPool.cs
- TextParagraphCache.cs
- CellIdBoolean.cs
- DispatcherExceptionFilterEventArgs.cs
- StorageMappingItemCollection.cs
- XmlUtil.cs
- __ComObject.cs
- RegistrySecurity.cs
- ExpressionVisitor.cs
- SmiXetterAccessMap.cs
- MouseGestureConverter.cs
- AssemblyResolver.cs
- XmlStringTable.cs
- HandleCollector.cs
- CmsInterop.cs
- SQLInt32Storage.cs
- TreePrinter.cs
- GridPattern.cs
- XPathNodeIterator.cs
- ClipboardData.cs
- DiscoveryRequestHandler.cs
- AppDomain.cs
- TraceSection.cs
- FlowDocumentPage.cs
- HScrollBar.cs
- RNGCryptoServiceProvider.cs
- PageEventArgs.cs
- XamlFilter.cs
- ConfigurationFileMap.cs
- DataColumn.cs
- SqlMethodAttribute.cs
- ConnectionManagementElementCollection.cs
- DllNotFoundException.cs
- TypeDescriptionProvider.cs
- SiteMapPath.cs
- QuaternionAnimation.cs