AppDomain.CreateInstanceFrom 方法

定义

创建在指定程序集文件中定义的指定类型的新实例。

重载

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
已过时.

创建在指定程序集文件中定义的指定类型的新实例。

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

创建在指定程序集文件中定义的指定类型的新实例。

CreateInstanceFrom(String, String, Object[])

创建在指定程序集文件中定义的指定类型的新实例。

CreateInstanceFrom(String, String)

创建在指定程序集文件中定义的指定类型的新实例。

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)

注意

Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

创建在指定程序集文件中定义的指定类型的新实例。

public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes, System::Security::Policy::Evidence ^ securityAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
abstract member CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityAttributes As Evidence) As ObjectHandle

参数

assemblyFile
String

文件的名称(包括路径),该文件包含定义所请求类型的程序集。 该程序集是使用 LoadFrom(String) 方法加载的。

typeName
String

FullName 属性返回的所请求类型的完全限定名称,包含命名空间而不是程序集。

ignoreCase
Boolean

一个布尔值,指示是否执行区分大小写的搜索。

bindingAttr
BindingFlags

影响 typeName 构造函数搜索的零个或多个位标志的组合。 如果 bindingAttr 为零,则对公共构造函数进行区分大小写的搜索。

binder
Binder

一个对象,它启用绑定、对参数类型的强制、对成员的调用,以及通过反射对 MemberInfo 对象的检索。 如果 binder 为 null,则使用默认联编程序。

args
Object[]

要传递给构造函数的实参。 此实参数组必须在数量、顺序和类型方面与要调用的构造函数的形参匹配。 如果无参数构造函数是首选,则 args 必须为空数组或 NULL。

culture
CultureInfo

区域性特定的信息,这些信息控制将 args 强制转换为 typeName 构造函数所声明的正式类型。 如果 culturenull,则使用当前线程的 CultureInfo

activationAttributes
Object[]

包含一个或多个可以参与激活的特性的数组。 通常,为包含单个 UrlAttribute 对象的数组,该对象指定激活远程对象所需的 URL。

此参数与客户端激活的对象相关。 客户端激活是一项传统技术,保留用于向后兼容,但不建议用于新的开发。 应改用 Windows Communication Foundation 来开发分布式应用程序。

securityAttributes
Evidence

用于授权创建 typeName 的信息。

返回

一个对象,它是新实例的包装,或者如果找不到 null,则为 typeName。 返回值需要打开包装才能访问真实对象。

实现

属性

例外

assemblyFilenull

typeNamenull

调用方不能为非继承自 MarshalByRefObject 的对象提供激活属性。

- 或 -

securityAttributes 不是 null。 未启用旧版 CAS 策略时,securityAttributes 应为 null

在卸载的应用程序域上尝试该操作。

未找到 assemblyFile

assemblyFile 中未找到 typeName

未找到匹配的公共构造函数。

调用方没有足够的权限调用此构造函数。

assemblyFile 不是当前加载的运行时的有效程序集。

一个程序集或模块用两个不同的证据加载了两次。

此示例为 null

注解

有关此方法的详细信息,请参阅 Activator.CreateInstanceFrom 方法。

CreateInstanceFrom当 使用 方法在目标应用程序域中(从中执行调用的应用程序域之外)中创建实例时,程序集将加载到目标应用程序域中。 但是,如果在调用应用程序域中解包实例,则以某些方式使用未包装的实例可能会导致程序集加载到调用应用程序域中。 例如,在解包实例后,可能会请求其类型信息,以便后期绑定调用其方法。 将程序集加载到调用应用程序域中时,可能会发生异常。

  • 如果以前将同一程序集的另一个版本加载到调用应用程序域中,或者调用应用程序域的加载路径与目标应用程序域的加载路径不同,则可能发生类似 的 MissingMethodException 异常。

  • 如果调用应用程序域对实例类型进行早期绑定调用, InvalidCastException 则在尝试强制转换实例时可能会引发 。

另请参阅

适用于

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Source:
AppDomain.cs
Source:
AppDomain.cs
Source:
AppDomain.cs

创建在指定程序集文件中定义的指定类型的新实例。

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom (string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle

参数

assemblyFile
String

文件的名称(包括路径),该文件包含定义所请求类型的程序集。 该程序集是使用 LoadFrom(String) 方法加载的。

typeName
String

FullName 属性返回的所请求类型的完全限定名称,包含命名空间而不是程序集。

ignoreCase
Boolean

一个布尔值,指示是否执行区分大小写的搜索。

bindingAttr
BindingFlags

影响 typeName 构造函数搜索的零个或多个位标志的组合。 如果 bindingAttr 为零,则对公共构造函数进行区分大小写的搜索。

binder
Binder

一个对象,它启用绑定、对参数类型的强制、对成员的调用,以及通过反射对 MemberInfo 对象的检索。 如果 binder 为 null,则使用默认联编程序。

args
Object[]

要传递给构造函数的实参。 此实参数组必须在数量、顺序和类型方面与要调用的构造函数的形参匹配。 如果无参数构造函数是首选,则 args 必须为空数组或 NULL。

culture
CultureInfo

区域性特定的信息,这些信息控制将 args 强制转换为 typeName 构造函数所声明的正式类型。 如果 culturenull,则使用当前线程的 CultureInfo

activationAttributes
Object[]

包含一个或多个可以参与激活的特性的数组。 通常,为包含单个 UrlAttribute 对象的数组,该对象指定激活远程对象所需的 URL。

此参数与客户端激活的对象相关。 客户端激活是一项传统技术,保留用于向后兼容,但不建议用于新的开发。 应改用 Windows Communication Foundation 来开发分布式应用程序。

返回

一个对象,它是新实例的包装,或者如果找不到 null,则为 typeName。 返回值需要打开包装才能访问真实对象。

例外

assemblyFilenull

typeNamenull

调用方不能为非继承自 MarshalByRefObject 的对象提供激活属性。

在卸载的应用程序域上尝试该操作。

未找到 assemblyFile

assemblyFile 中未找到 typeName

未找到匹配的公共构造函数。

调用方没有足够的权限调用此构造函数。

assemblyFile 不是当前加载的运行时的有效程序集。

一个程序集或模块用两个不同的证据加载了两次。

此示例为 null

注解

有关更多信息,请参见 Activator.CreateInstanceFrom 方法。

CreateInstanceFrom当 使用 方法在目标应用程序域中(从中执行调用的应用程序域之外)中创建实例时,程序集将加载到目标应用程序域中。 但是,如果在调用应用程序域中解包实例,则以某些方式使用未包装的实例可能会导致程序集加载到调用应用程序域中。 例如,在解包实例后,可能会请求其类型信息,以便后期绑定调用其方法。 将程序集加载到调用应用程序域中时,可能会发生异常。

  • 如果以前将同一程序集的另一个版本加载到调用应用程序域中,或者调用应用程序域的加载路径与目标应用程序域的加载路径不同,则可能发生类似 的 MissingMethodException 异常。

  • 如果调用应用程序域对实例类型进行早期绑定调用, InvalidCastException 则在尝试强制转换实例时可能会引发 。

另请参阅

适用于

CreateInstanceFrom(String, String, Object[])

Source:
AppDomain.cs
Source:
AppDomain.cs
Source:
AppDomain.cs

创建在指定程序集文件中定义的指定类型的新实例。

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom (string assemblyFile, string typeName, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, object[] activationAttributes);
member this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
abstract member CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, activationAttributes As Object()) As ObjectHandle

参数

assemblyFile
String

文件的名称(包括路径),该文件包含定义所请求类型的程序集。 该程序集是使用 LoadFrom(String) 方法加载的。

typeName
String

FullName 属性返回的所请求类型的完全限定名称,包含命名空间而不是程序集。

activationAttributes
Object[]

包含一个或多个可以参与激活的特性的数组。 通常,为包含单个 UrlAttribute 对象的数组,该对象指定激活远程对象所需的 URL。

此参数与客户端激活的对象相关。客户端激活是一项传统技术,保留用于向后兼容,但不建议用于新的开发。 应改用 Windows Communication Foundation 来开发分布式应用程序。

返回

一个对象,它是新实例的包装,或者如果找不到 null,则为 typeName。 返回值需要打开包装才能访问真实对象。

实现

例外

assemblyFilenull

未找到 assemblyFile

assemblyFile 中未找到 typeName

调用方没有足够的权限调用此构造函数。

未找到匹配的公共构造函数。

调用方不能为非继承自 MarshalByRefObject 的对象提供激活属性。

在卸载的应用程序域上尝试该操作。

assemblyFile 对于当前加载的运行时,不是有效的程序集。

一个程序集或模块用两个不同的证据加载了两次。

此示例为 null

注解

调用 的 typeName 无参数构造函数。

有关此方法的详细信息,请参阅 Activator.CreateInstanceFrom 方法。

CreateInstanceFrom当 使用 方法在目标应用程序域中(发出调用的应用程序域以外的应用程序域)中创建实例时,程序集将加载到目标应用程序域中。 但是,如果在调用应用程序域中取消包装实例,则以某些方式使用未包装的实例可能会导致程序集加载到调用应用程序域中。 例如,在取消包装实例后,可能会请求其类型信息,以便后期绑定调用其方法。 当程序集加载到调用应用程序域中时,可能会出现异常。

  • 如果以前将同一程序集的另一个版本加载到调用应用程序域中,或者调用应用程序域的加载路径与目标应用程序域的加载路径不同,则可能发生类似异常 MissingMethodException 的情况。

  • 如果调用应用程序域对实例类型进行早期绑定调用, InvalidCastException 则在尝试强制转换实例时可能会引发。

另请参阅

适用于

CreateInstanceFrom(String, String)

Source:
AppDomain.cs
Source:
AppDomain.cs
Source:
AppDomain.cs

创建在指定程序集文件中定义的指定类型的新实例。

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom (string assemblyFile, string typeName);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName);
member this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
abstract member CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String) As ObjectHandle

参数

assemblyFile
String

文件的名称(包括路径),该文件包含定义所请求类型的程序集。 该程序集是使用 LoadFrom(String) 方法加载的。

typeName
String

FullName 属性返回的所请求类型的完全限定名称,包含命名空间而不是程序集。

返回

一个对象,它是新实例的包装,或者如果找不到 null,则为 typeName。 返回值需要打开包装才能访问真实对象。

实现

例外

assemblyFilenull

typeNamenull

未找到 assemblyFile

assemblyFile 中未找到 typeName

在卸载的应用程序域上尝试该操作。

未找到无形参的公共构造函数。

调用方没有足够的权限调用此构造函数。

assemblyFile 对于当前加载的运行时,不是有效的程序集。

一个程序集或模块用两个不同的证据加载了两次。

此示例为 null

示例

以下示例演示如何使用 CreateInstanceFrom(String, String) 方法重载在目标应用程序域中创建对象的实例并调用其方法。

该示例定义了 MarshalableExample 类,该类可以跨应用程序域边界封送。 该示例生成当前正在执行的程序集的路径,创建目标应用程序域,并使用 CreateInstanceFrom(String, String) 方法重载将示例程序集加载到目标应用程序域,并创建 的 MarshalableExample实例。

注意

在此示例中,路径是绝对路径,但相对路径也可用, Assembly.LoadFrom 因为 方法用于加载程序集。

在取消包装对象句柄后,该示例演示了在目标应用程序域中使用对象的三种方法:

  • 使用反射调用具有后期绑定的方法。 这需要类型信息,这会导致程序集加载到调用方的应用程序域中。 (在此示例中,它已加载。)

  • 将 对象强制转换为调用方和被调用方已知的接口。 如果在调用程序集或调用方和被调用方引用的第三个程序集中定义接口,则调用的程序集不会加载到调用方的应用程序域中。

  • 当调用方知道对象类型时,直接使用该对象。 程序集必须加载到调用方的应用程序域中。

避免将调用程序集加载到调用方的应用程序域中的另一种方法是,调用方从 MarshalByRefObject 类派生并定义可在目标应用程序域中运行的方法。 该方法可以使用反射来检查目标程序集,因为目标程序集已加载到目标应用程序域中。 请参阅 属性的示例 DynamicDirectory

using namespace System;

public interface class ITest
{
    void Test(String^ greeting);
};

public ref class MarshalableExample : MarshalByRefObject, ITest
{
public:
    virtual void Test(String^ greeting)
    {
        Console::WriteLine("{0} from '{1}'!", greeting,
            AppDomain::CurrentDomain->FriendlyName);
    }
};

void main()
{
    // Construct a path to the current assembly.
    String^ assemblyPath = Environment::CurrentDirectory + "\\" +
        MarshalableExample::typeid->Assembly->GetName()->Name + ".exe";

    AppDomain^ ad = AppDomain::CreateDomain("MyDomain");
 
    System::Runtime::Remoting::ObjectHandle^ oh = 
        ad->CreateInstanceFrom(assemblyPath, "MarshalableExample");

    Object^ obj = oh->Unwrap();


    // Three ways to use the newly created object, depending on how
    // much is known about the type: Late bound, early bound through 
    // a mutually known interface, or early binding of a known type.
    //
    obj->GetType()->InvokeMember("Test", 
        System::Reflection::BindingFlags::InvokeMethod, 
        Type::DefaultBinder, obj, gcnew array<Object^> { "Hello" });

    ITest^ it = (ITest^) obj;
    it->Test("Hi");

    MarshalableExample^ ex = (MarshalableExample^) obj;
    ex->Test("Goodbye");
}

/* This example produces the following output:

Hello from 'MyDomain'!
Hi from 'MyDomain'!
Goodbye from 'MyDomain'!
 */
using System;

public interface ITest
{
    void Test(string greeting);
}

public class MarshalableExample : MarshalByRefObject, ITest
{
    static void Main()
    {
        // Construct a path to the current assembly.
        string assemblyPath = Environment.CurrentDirectory + "\\" +
            typeof(MarshalableExample).Assembly.GetName().Name + ".exe";

        AppDomain ad = AppDomain.CreateDomain("MyDomain");

        System.Runtime.Remoting.ObjectHandle oh =
            ad.CreateInstanceFrom(assemblyPath, "MarshalableExample");

        object obj = oh.Unwrap();

        // Three ways to use the newly created object, depending on how
        // much is known about the type: Late bound, early bound through
        // a mutually known interface, or early binding of a known type.
        //
        obj.GetType().InvokeMember("Test",
            System.Reflection.BindingFlags.InvokeMethod,
            Type.DefaultBinder, obj, new object[] { "Hello" });

        ITest it = (ITest) obj;
        it.Test("Hi");

        MarshalableExample ex = (MarshalableExample) obj;
        ex.Test("Goodbye");
    }

    public void Test(string greeting)
    {
        Console.WriteLine("{0} from '{1}'!", greeting,
            AppDomain.CurrentDomain.FriendlyName);
    }
}

/* This example produces the following output:

Hello from 'MyDomain'!
Hi from 'MyDomain'!
Goodbye from 'MyDomain'!
 */
open System

type ITest =
    abstract Test: string -> unit

type MarshalableExample() =
    inherit MarshalByRefObject()
    
    member _.Test greeting =
        printfn $"{greeting} from '{AppDomain.CurrentDomain.FriendlyName}'!"

    interface ITest with
        member this.Test message = this.Test message 

// Construct a path to the current assembly.
let assemblyPath = 
    Environment.CurrentDirectory + "\\" + typeof<MarshalableExample>.Assembly.GetName().Name + ".exe"

let ad = AppDomain.CreateDomain "MyDomain"

let oh =
    ad.CreateInstanceFrom(assemblyPath, "MarshalableExample")

let obj = oh.Unwrap()

// Three ways to use the newly created object, depending on how
// much is known about the type: Late bound, early bound through
// a mutually known interface, or early binding of a known type.
//
obj.GetType().InvokeMember("Test",
    System.Reflection.BindingFlags.InvokeMethod,
    Type.DefaultBinder, obj, [| box "Hello" |])
|> ignore

let it = obj :?> ITest
it.Test "Hi"

let ex = obj :?> MarshalableExample
ex.Test("Goodbye")

(* This example produces the following output:

Hello from 'MyDomain'!
Hi from 'MyDomain'!
Goodbye from 'MyDomain'!
 *)
Public Interface ITest

    Sub Test(ByVal greeting As String)
End Interface

Public Class MarshalableExample 
    Inherits MarshalByRefObject
    Implements ITest

    Shared Sub Main()
    
        ' Construct a path to the current assembly.
        Dim assemblyPath As String = Environment.CurrentDirectory & "\" &
            GetType(MarshalableExample).Assembly.GetName().Name & ".exe"

        Dim ad As AppDomain = AppDomain.CreateDomain("MyDomain")
 
        Dim oh As System.Runtime.Remoting.ObjectHandle = 
            ad.CreateInstanceFrom(assemblyPath, "MarshalableExample")

        Dim obj As Object = oh.Unwrap()


        ' Three ways to use the newly created object, depending on how
        ' much is known about the type: Late bound, early bound through 
        ' a mutually known interface, or early binding of a known type.
        '
        obj.GetType().InvokeMember("Test", 
            System.Reflection.BindingFlags.InvokeMethod, 
            Type.DefaultBinder, obj, New Object() { "Hello" })

        Dim it As ITest = CType(obj, ITest) 
        it.Test("Hi")

        Dim ex As MarshalableExample = CType(obj, MarshalableExample) 
        ex.Test("Goodbye")
    End Sub

    Public Sub Test(ByVal greeting As String) Implements ITest.Test
    
        Console.WriteLine("{0} from '{1}'!", greeting,
            AppDomain.CurrentDomain.FriendlyName)
    End Sub
End Class

' This example produces the following output:
'
'Hello from 'MyDomain'!
'Hi from 'MyDomain'!
'Goodbye from 'MyDomain'!

注解

调用 的 typeName 无参数构造函数。

有关更多信息,请参见 Activator.CreateInstanceFrom 方法。

CreateInstanceFrom当 使用 方法在目标应用程序域中(发出调用的应用程序域以外的应用程序域)中创建实例时,程序集将加载到目标应用程序域中。 但是,如果在调用应用程序域中取消包装实例,则以某些方式使用未包装的实例可能会导致程序集加载到调用应用程序域中。 例如,在取消包装实例后,可能会请求其类型信息,以便后期绑定调用其方法。 当程序集加载到调用应用程序域中时,可能会出现异常。

  • 如果以前将同一程序集的另一个版本加载到调用应用程序域中,或者调用应用程序域的加载路径与目标应用程序域的加载路径不同,则可能发生类似异常 MissingMethodException 的情况。

  • 如果调用应用程序域对实例类型进行早期绑定调用, InvalidCastException 则在尝试强制转换实例时可能会引发。

另请参阅

适用于