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
- DbConnectionInternal.cs
- StrokeCollection2.cs
- Queue.cs
- XmlQualifiedNameTest.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ClientRolePrincipal.cs
- NotSupportedException.cs
- LinqMaximalSubtreeNominator.cs
- XmlNodeList.cs
- AssemblyBuilder.cs
- SubclassTypeValidatorAttribute.cs
- SchemaElementDecl.cs
- Menu.cs
- DelegateBodyWriter.cs
- InkPresenter.cs
- SEHException.cs
- DataGridViewRow.cs
- KeyPullup.cs
- NavigateEvent.cs
- SqlCacheDependencyDatabaseCollection.cs
- WrappedIUnknown.cs
- MessagePropertyAttribute.cs
- CellParagraph.cs
- Literal.cs
- StylusPointProperties.cs
- TraceListeners.cs
- CFStream.cs
- SearchForVirtualItemEventArgs.cs
- BCryptSafeHandles.cs
- DataBindingExpressionBuilder.cs
- ComponentCommands.cs
- RelatedImageListAttribute.cs
- BaseTemplateBuildProvider.cs
- RegexCompilationInfo.cs
- SqlDataSourceCustomCommandEditor.cs
- ObjectConverter.cs
- AsyncWaitHandle.cs
- TraceHandlerErrorFormatter.cs
- ConnectionPoolManager.cs
- CryptoApi.cs
- RegularExpressionValidator.cs
- PlatformNotSupportedException.cs
- RequestedSignatureDialog.cs
- PackWebRequest.cs
- HttpWebResponse.cs
- SQLMembershipProvider.cs
- XamlHostingConfiguration.cs
- ResourceFallbackManager.cs
- SqlRowUpdatingEvent.cs
- GridView.cs
- InvalidAsynchronousStateException.cs
- GeometryDrawing.cs
- IPAddressCollection.cs
- OwnerDrawPropertyBag.cs
- LicFileLicenseProvider.cs
- ResourcePool.cs
- OwnerDrawPropertyBag.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- StickyNoteContentControl.cs
- PageWrapper.cs
- TableStyle.cs
- DirectionalLight.cs
- ImageButton.cs
- SafeCancelMibChangeNotify.cs
- IndexerNameAttribute.cs
- RenderCapability.cs
- PartManifestEntry.cs
- OptimizedTemplateContent.cs
- WindowsNonControl.cs
- KeyboardNavigation.cs
- RepeatBehaviorConverter.cs
- StagingAreaInputItem.cs
- PointValueSerializer.cs
- BodyWriter.cs
- HtmlControl.cs
- ValueSerializerAttribute.cs
- DesignerSerializationOptionsAttribute.cs
- TextElementEnumerator.cs
- EncoderExceptionFallback.cs
- XmlDataSourceView.cs
- UntrustedRecipientException.cs
- ZipIOLocalFileDataDescriptor.cs
- UnsafeNativeMethods.cs
- _CacheStreams.cs
- TextTreeTextElementNode.cs
- SHA256.cs
- XmlSchemaInclude.cs
- _HeaderInfoTable.cs
- CommonObjectSecurity.cs
- Point3DCollection.cs
- RestClientProxyHandler.cs
- GlyphCache.cs
- InvalidComObjectException.cs
- DataGridAddNewRow.cs
- HttpMethodAttribute.cs
- Literal.cs
- AddInContractAttribute.cs
- Sequence.cs
- FormViewDeletedEventArgs.cs
- AssociationType.cs