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
- OdbcError.cs
- DocumentSequenceHighlightLayer.cs
- OrderedHashRepartitionEnumerator.cs
- FrameSecurityDescriptor.cs
- FtpWebRequest.cs
- PasswordTextNavigator.cs
- ConfigurationStrings.cs
- ImageMap.cs
- ArrayExtension.cs
- BindingGroup.cs
- ErrorTableItemStyle.cs
- Container.cs
- TreeBuilder.cs
- DataGridAddNewRow.cs
- Context.cs
- SslStreamSecurityBindingElement.cs
- App.cs
- XPathParser.cs
- Highlights.cs
- SortFieldComparer.cs
- CheckBoxBaseAdapter.cs
- TextRange.cs
- dbdatarecord.cs
- ObjectDataSourceEventArgs.cs
- Constraint.cs
- ValueTypeFixupInfo.cs
- BamlLocalizer.cs
- ResourceReferenceExpression.cs
- HttpHandlerActionCollection.cs
- Message.cs
- DockPanel.cs
- Cursor.cs
- DBCSCodePageEncoding.cs
- NumberFormatInfo.cs
- TextContainerChangeEventArgs.cs
- SamlAttributeStatement.cs
- CustomError.cs
- SchemeSettingElementCollection.cs
- DesignerRegion.cs
- ParameterElementCollection.cs
- StringConverter.cs
- mansign.cs
- ObjectQueryExecutionPlan.cs
- ClientSettingsStore.cs
- UntypedNullExpression.cs
- safex509handles.cs
- SafeNativeMethods.cs
- MenuItem.cs
- AutoGeneratedFieldProperties.cs
- ScriptManagerProxy.cs
- FormView.cs
- WebPartsPersonalization.cs
- AlternationConverter.cs
- DataMemberFieldEditor.cs
- ExpressionConverter.cs
- PathSegment.cs
- ObjectListFieldsPage.cs
- IUnknownConstantAttribute.cs
- DiscreteKeyFrames.cs
- IIS7WorkerRequest.cs
- XamlClipboardData.cs
- SynchronizationHandlesCodeDomSerializer.cs
- PanelContainerDesigner.cs
- ProtectedConfiguration.cs
- Win32Exception.cs
- ConnectionInterfaceCollection.cs
- MethodBody.cs
- CursorInteropHelper.cs
- XamlContextStack.cs
- MDIControlStrip.cs
- Viewport3DAutomationPeer.cs
- TextAdaptor.cs
- WithParamAction.cs
- ObjectNavigationPropertyMapping.cs
- MsdtcClusterUtils.cs
- MetabaseSettings.cs
- _NegotiateClient.cs
- BooleanAnimationBase.cs
- ToolboxService.cs
- httpapplicationstate.cs
- WebPartConnection.cs
- MouseCaptureWithinProperty.cs
- SByte.cs
- DrawListViewSubItemEventArgs.cs
- Vector3DAnimation.cs
- Vector3DAnimation.cs
- DirectoryNotFoundException.cs
- WhitespaceSignificantCollectionAttribute.cs
- GrammarBuilderDictation.cs
- IPipelineRuntime.cs
- externdll.cs
- UICuesEvent.cs
- CalloutQueueItem.cs
- DataColumnCollection.cs
- ReadOnlyDictionary.cs
- ListItemViewAttribute.cs
- DetailsViewCommandEventArgs.cs
- unsafenativemethodstextservices.cs
- GroupBoxRenderer.cs
- TypeResolvingOptions.cs