Code:
/ 4.0 / 4.0 / 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. 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() { List filteredTypes = 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
- Frame.cs
- SiteMapNodeItem.cs
- MemberPathMap.cs
- ParallelTimeline.cs
- EmptyReadOnlyDictionaryInternal.cs
- EntityFunctions.cs
- TableCellCollection.cs
- EmptyControlCollection.cs
- Oid.cs
- Cloud.cs
- Message.cs
- HttpListenerResponse.cs
- WsdlWriter.cs
- _BasicClient.cs
- BamlRecords.cs
- DataGridItemCollection.cs
- uribuilder.cs
- Point3DCollectionConverter.cs
- IntegerValidatorAttribute.cs
- Compiler.cs
- FontInfo.cs
- BindingElement.cs
- BaseDataListPage.cs
- Int32.cs
- CompleteWizardStep.cs
- TextBoxBaseDesigner.cs
- SerTrace.cs
- RelationshipConverter.cs
- BaseHashHelper.cs
- XhtmlBasicTextViewAdapter.cs
- EmptyCollection.cs
- ImageBrush.cs
- WebConfigurationHostFileChange.cs
- ExtendedPropertyCollection.cs
- CssTextWriter.cs
- FilteredDataSetHelper.cs
- ReflectEventDescriptor.cs
- CompilerScopeManager.cs
- HostingEnvironmentException.cs
- QueueAccessMode.cs
- TextRange.cs
- IndicShape.cs
- KeysConverter.cs
- ResponseBodyWriter.cs
- XPathExpr.cs
- BasicKeyConstraint.cs
- IUnknownConstantAttribute.cs
- AsyncOperation.cs
- ResourceDisplayNameAttribute.cs
- DBCSCodePageEncoding.cs
- MetabaseServerConfig.cs
- SymLanguageType.cs
- ObjectNotFoundException.cs
- _BufferOffsetSize.cs
- EntityDataSourceContainerNameItem.cs
- TransformedBitmap.cs
- ComplexLine.cs
- SoapObjectWriter.cs
- TextTrailingWordEllipsis.cs
- SharedUtils.cs
- SqlRowUpdatingEvent.cs
- WmlFormAdapter.cs
- safex509handles.cs
- BrowserCapabilitiesFactory.cs
- OletxEnlistment.cs
- RealProxy.cs
- DispatcherHookEventArgs.cs
- DataGridViewRowHeaderCell.cs
- XpsResourceDictionary.cs
- SystemIPGlobalStatistics.cs
- MethodAccessException.cs
- PersonalizablePropertyEntry.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- PropertyEmitter.cs
- ILGenerator.cs
- DefaultObjectSerializer.cs
- BookmarkNameHelper.cs
- EdmFunctions.cs
- DataRecordInternal.cs
- TextAutomationPeer.cs
- Config.cs
- ControlAdapter.cs
- TypeContext.cs
- ZipIORawDataFileBlock.cs
- ObjectQuery.cs
- basevalidator.cs
- Pointer.cs
- returneventsaver.cs
- ComEventsHelper.cs
- StringValidator.cs
- ContentFileHelper.cs
- ObjectTypeMapping.cs
- EmbossBitmapEffect.cs
- GeometryModel3D.cs
- SqlDependencyUtils.cs
- HtmlButton.cs
- DbConnectionPoolIdentity.cs
- CalendarDayButton.cs
- TransactedReceiveData.cs
- storepermissionattribute.cs