Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Compiler / TypeSystem / AssemblyLoader.cs / 1305376 / AssemblyLoader.cs
namespace System.Workflow.ComponentModel.Compiler { using System; using System.Collections.Generic; using System.Reflection; using System.ComponentModel.Design; using System.IO; internal class AssemblyLoader { private Assembly assembly = null; private AssemblyName assemblyName = null; private TypeProvider typeProvider = null; private bool isLocalAssembly; internal AssemblyLoader(TypeProvider typeProvider, string filePath) { this.isLocalAssembly = false; this.typeProvider = typeProvider; if (File.Exists(filePath)) { AssemblyName asmName = AssemblyName.GetAssemblyName(filePath); if (asmName != null) { // Try loading the assembly using type resolution service first. ITypeResolutionService trs = (ITypeResolutionService)typeProvider.GetService(typeof(ITypeResolutionService)); if (trs != null) { try { this.assembly = trs.GetAssembly(asmName); // if (this.assembly == null && asmName.GetPublicKeyToken() != null && (asmName.GetPublicKeyToken().GetLength(0) == 0) && asmName.GetPublicKey() != null && (asmName.GetPublicKey().GetLength(0) == 0)) { AssemblyName partialName = (AssemblyName)asmName.Clone(); partialName.SetPublicKey(null); partialName.SetPublicKeyToken(null); this.assembly = trs.GetAssembly(partialName); } } catch { // Eat up any exceptions! } } // If type resolution service wasn't available or it failed use Assembly.Load if (this.assembly == null) { try { if (MultiTargetingInfo.MultiTargetingUtilities.IsFrameworkReferenceAssembly(filePath)) { this.assembly = Assembly.Load(asmName.FullName); } else { this.assembly = Assembly.Load(asmName); } } catch { // Eat up any exceptions! } } } // If Assembly.Load also failed, use Assembly.LoadFrom if (this.assembly == null) { this.assembly = Assembly.LoadFrom(filePath); } } else { // TypeProvider will handle this and report the error throw new FileNotFoundException(); } } internal AssemblyLoader(TypeProvider typeProvider, Assembly assembly, bool isLocalAssembly) { this.isLocalAssembly = isLocalAssembly; this.typeProvider = typeProvider; this.assembly = assembly; } internal Type GetType(string typeName) { // if (this.assembly != null) { Type type = null; try { type = this.assembly.GetType(typeName); } catch (ArgumentException) { // we eat these exeptions in our type system } if ((type != null) && (type.IsPublic || type.IsNestedPublic || (this.isLocalAssembly && type.Attributes != TypeAttributes.NestedPrivate))) return type; } return null; } internal Type[] GetTypes() { ListfilteredTypes = new List (); if (this.assembly != null) { // foreach (Type type in this.assembly.GetTypes()) { // if(type.IsPublic || (this.isLocalAssembly && type.Attributes != TypeAttributes.NestedPrivate)) filteredTypes.Add(type); } } return filteredTypes.ToArray(); } // we cache the AssemblyName as Assembly.GetName() is expensive internal AssemblyName AssemblyName { get { if (this.assemblyName == null) this.assemblyName = this.assembly.GetName(true); return this.assemblyName; } } internal Assembly Assembly { get { return this.assembly; } } } } // 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
- PersonalizationStateQuery.cs
- FixedHighlight.cs
- GlobalizationAssembly.cs
- ChtmlImageAdapter.cs
- HtmlShim.cs
- HtmlInputSubmit.cs
- MembershipSection.cs
- HtmlInputHidden.cs
- EntityParameter.cs
- xsdvalidator.cs
- TextRunCacheImp.cs
- GuidelineSet.cs
- Pen.cs
- EmbeddedMailObjectsCollection.cs
- ComponentResourceKeyConverter.cs
- WindowsGrip.cs
- CurrencyWrapper.cs
- CacheEntry.cs
- SchemaImporterExtension.cs
- TraceHwndHost.cs
- ToolStripSplitStackLayout.cs
- JournalEntry.cs
- MdiWindowListItemConverter.cs
- MetadataCacheItem.cs
- RandomNumberGenerator.cs
- EncryptedPackageFilter.cs
- Calendar.cs
- SqlDataSourceEnumerator.cs
- CodeLabeledStatement.cs
- RpcAsyncResult.cs
- PrintController.cs
- WorkflowInstanceTerminatedRecord.cs
- ContentHostHelper.cs
- Rotation3DAnimationUsingKeyFrames.cs
- EmissiveMaterial.cs
- XPathSelectionIterator.cs
- TextRangeProviderWrapper.cs
- MetadataCollection.cs
- TreeViewItem.cs
- AssemblyLoader.cs
- InstallHelper.cs
- XmlSchemaGroup.cs
- ExceptionCollection.cs
- WinFormsComponentEditor.cs
- XmlRootAttribute.cs
- Deserializer.cs
- XmlFormatMapping.cs
- XmlnsCache.cs
- LongValidatorAttribute.cs
- DomainUpDown.cs
- SolidBrush.cs
- PageContentCollection.cs
- AbstractSvcMapFileLoader.cs
- CircleHotSpot.cs
- PropertyConverter.cs
- RangeExpression.cs
- ObjectConverter.cs
- DocComment.cs
- XmlBaseWriter.cs
- DataRelationCollection.cs
- UniqueEventHelper.cs
- DurableServiceAttribute.cs
- LinqDataSourceDeleteEventArgs.cs
- ReachPageContentSerializerAsync.cs
- WindowVisualStateTracker.cs
- StringToken.cs
- InkCollectionBehavior.cs
- TcpHostedTransportConfiguration.cs
- XmlNodeChangedEventManager.cs
- ObjectManager.cs
- TextTreeFixupNode.cs
- _LazyAsyncResult.cs
- XmlCharType.cs
- SQLStringStorage.cs
- UrlPropertyAttribute.cs
- TreeNodeBindingCollection.cs
- ParameterCollectionEditorForm.cs
- StringKeyFrameCollection.cs
- SymbolPair.cs
- SQLChars.cs
- RowToFieldTransformer.cs
- PageContent.cs
- RuleSettings.cs
- InputMethodStateTypeInfo.cs
- CurrentTimeZone.cs
- CompilerGlobalScopeAttribute.cs
- ResourceAttributes.cs
- SkinBuilder.cs
- BatchStream.cs
- SafeLibraryHandle.cs
- ValueExpressions.cs
- EnterpriseServicesHelper.cs
- PingReply.cs
- ContentIterators.cs
- ObjectDataSourceDisposingEventArgs.cs
- OutputCacheSettingsSection.cs
- KeyValueSerializer.cs
- ViewManager.cs
- base64Transforms.cs
- ContainerParagraph.cs