Bagikan melalui


AppDomain.CreateInstanceFrom Metode

Definisi

Membuat instans baru dari jenis tertentu yang ditentukan dalam file rakitan yang ditentukan.

Overload

Nama Deskripsi
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Kedaluwarsa.

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

CreateInstanceFrom(String, String, Object[])

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

CreateInstanceFrom(String, String)

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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

Perhatian

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.

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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

Parameter

assemblyFile
String

Nama, termasuk jalur, file yang berisi rakitan yang menentukan jenis yang diminta. Rakitan dimuat menggunakan LoadFrom(String) metode .

typeName
String

Nama yang sepenuhnya memenuhi syarat dari jenis yang diminta, termasuk namespace tetapi bukan assembly, seperti yang dikembalikan oleh FullName properti .

ignoreCase
Boolean

Nilai Boolean yang menentukan apakah akan melakukan pencarian peka huruf besar/kecil atau tidak.

bindingAttr
BindingFlags

Kombinasi bendera nol atau lebih bit yang memengaruhi pencarian konstruktor typeName . Jika bindingAttr nol, pencarian peka huruf besar/kecil untuk konstruktor publik dilakukan.

binder
Binder

Objek yang memungkinkan pengikatan, koersi jenis argumen, pemanggilan anggota, dan MemberInfo pengambilan objek melalui pantulan. Jika binder null, pengikat default digunakan.

args
Object[]

Argumen yang akan diteruskan ke konstruktor. Array argumen ini harus cocok dalam jumlah, urutan, dan ketik parameter konstruktor yang akan dipanggil. Jika konstruktor tanpa parameter lebih disukai, args harus berupa array kosong atau null.

culture
CultureInfo

Informasi khusus budaya yang mengatur koersi ke jenis args formal yang dideklarasikan untuk typeName konstruktor. Jika culture adalah null, CultureInfo untuk utas saat ini digunakan.

activationAttributes
Object[]

Array dari satu atau beberapa atribut yang dapat berpartisipasi dalam aktivasi. Biasanya, array yang berisi satu UrlAttribute objek yang menentukan URL yang diperlukan untuk mengaktifkan objek jarak jauh.

Parameter ini terkait dengan objek yang diaktifkan klien. Aktivasi klien adalah teknologi warisan yang dipertahankan untuk kompatibilitas mundur tetapi tidak direkomendasikan untuk pengembangan baru. Aplikasi terdistribusi harus menggunakan Windows Communication Foundation.

securityAttributes
Evidence

Informasi yang digunakan untuk mengotorisasi pembuatan typeName.

Mengembalikan

Objek yang merupakan pembungkus untuk instans baru, atau null jika typeName tidak ditemukan. Nilai yang dikembalikan perlu dibongkar untuk mengakses objek nyata.

Penerapan

Atribut

Pengecualian

assemblyFile adalah null.

-atau-

typeName adalah null.

Pemanggil tidak dapat menyediakan atribut aktivasi untuk objek yang tidak mewarisi dari MarshalByRefObject.

-atau-

securityAttributes bukan null. Ketika kebijakan CAS warisan tidak diaktifkan, securityAttributes harus null.

Operasi ini dicoba pada domain aplikasi yang tidak dimuat.

assemblyFile tidak ditemukan.

typeName tidak ditemukan di assemblyFile.

Tidak ditemukan konstruktor publik yang cocok.

Pemanggil tidak memiliki izin yang memadai untuk memanggil konstruktor ini.

assemblyFile bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Rakitan atau modul dimuat dua kali dengan dua bukti yang berbeda.

Instans ini adalah null.

Keterangan

Untuk informasi selengkapnya tentang metode ini, lihat Activator.CreateInstanceFrom metode .

CreateInstanceFrom Ketika metode digunakan untuk membuat instans di domain aplikasi target, selain domain aplikasi tempat panggilan dilakukan, assembly dimuat di domain aplikasi target. Namun, jika instans tidak dibungkus dalam domain aplikasi panggilan, menggunakan instans yang tidak dibungkus dengan cara tertentu dapat menyebabkan perakitan dimuat ke dalam domain aplikasi panggilan. Misalnya, setelah instans dibongkar, informasi jenisnya mungkin diminta, untuk memanggil metodenya yang terlambat terikat. Ketika rakitan dimuat ke dalam domain aplikasi panggilan, pengecualian dapat terjadi.

  • Jika versi lain dari rakitan yang sama sebelumnya dimuat ke domain aplikasi panggilan, atau jika jalur beban domain aplikasi panggilan berbeda dari domain aplikasi target, pengecualian seperti MissingMethodException dapat terjadi.

  • Jika domain aplikasi panggilan melakukan panggilan awal ke jenis instans, InvalidCastException dapat dilemparkan ketika upaya dilakukan untuk melemparkan instans.

Lihat juga

Berlaku untuk

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

Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
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);
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.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
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

Parameter

assemblyFile
String

Nama, termasuk jalur, file yang berisi rakitan yang menentukan jenis yang diminta. Rakitan dimuat menggunakan LoadFrom(String) metode .

typeName
String

Nama yang sepenuhnya memenuhi syarat dari jenis yang diminta, termasuk namespace tetapi bukan assembly, seperti yang dikembalikan oleh FullName properti .

ignoreCase
Boolean

Nilai Boolean yang menentukan apakah akan melakukan pencarian peka huruf besar/kecil atau tidak.

bindingAttr
BindingFlags

Kombinasi bendera nol atau lebih bit yang memengaruhi pencarian konstruktor typeName . Jika bindingAttr nol, pencarian peka huruf besar/kecil untuk konstruktor publik dilakukan.

binder
Binder

Objek yang memungkinkan pengikatan, koersi jenis argumen, pemanggilan anggota, dan MemberInfo pengambilan objek melalui pantulan. Jika binder null, pengikat default digunakan.

args
Object[]

Argumen yang akan diteruskan ke konstruktor. Array argumen ini harus cocok dalam jumlah, urutan, dan ketik parameter konstruktor yang akan dipanggil. Jika konstruktor tanpa parameter lebih disukai, args harus berupa array kosong atau null.

culture
CultureInfo

Informasi khusus budaya yang mengatur koersi ke jenis args formal yang dideklarasikan untuk typeName konstruktor. Jika culture adalah null, CultureInfo untuk utas saat ini digunakan.

activationAttributes
Object[]

Array dari satu atau beberapa atribut yang dapat berpartisipasi dalam aktivasi. Biasanya, array yang berisi satu UrlAttribute objek yang menentukan URL yang diperlukan untuk mengaktifkan objek jarak jauh.

Parameter ini terkait dengan objek yang diaktifkan klien. Aktivasi klien adalah teknologi warisan yang dipertahankan untuk kompatibilitas mundur tetapi tidak direkomendasikan untuk pengembangan baru. Aplikasi terdistribusi harus menggunakan Windows Communication Foundation.

Mengembalikan

Objek yang merupakan pembungkus untuk instans baru, atau null jika typeName tidak ditemukan. Nilai yang dikembalikan perlu dibongkar untuk mengakses objek nyata.

Atribut

Pengecualian

assemblyFile adalah null.

-atau-

typeName adalah null.

Pemanggil tidak dapat menyediakan atribut aktivasi untuk objek yang tidak mewarisi dari MarshalByRefObject.

Operasi ini dicoba pada domain aplikasi yang tidak dimuat.

assemblyFile tidak ditemukan.

typeName tidak ditemukan di assemblyFile.

Tidak ditemukan konstruktor publik yang cocok.

Pemanggil tidak memiliki izin yang memadai untuk memanggil konstruktor ini.

assemblyFile bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Rakitan atau modul dimuat dua kali dengan dua bukti yang berbeda.

Instans ini adalah null.

Keterangan

Untuk informasi selengkapnya, lihat metode Activator.CreateInstanceFrom.

CreateInstanceFrom Ketika metode digunakan untuk membuat instans di domain aplikasi target, selain domain aplikasi tempat panggilan dilakukan, assembly dimuat di domain aplikasi target. Namun, jika instans tidak dibungkus dalam domain aplikasi panggilan, menggunakan instans yang tidak dibungkus dengan cara tertentu dapat menyebabkan perakitan dimuat ke dalam domain aplikasi panggilan. Misalnya, setelah instans dibongkar, informasi jenisnya mungkin diminta, untuk memanggil metodenya yang terlambat terikat. Ketika rakitan dimuat ke dalam domain aplikasi panggilan, pengecualian dapat terjadi.

  • Jika versi lain dari rakitan yang sama sebelumnya dimuat ke domain aplikasi panggilan, atau jika jalur beban domain aplikasi panggilan berbeda dari domain aplikasi target, pengecualian seperti MissingMethodException dapat terjadi.

  • Jika domain aplikasi panggilan melakukan panggilan awal ke jenis instans, InvalidCastException dapat dilemparkan ketika upaya dilakukan untuk melemparkan instans.

Lihat juga

Berlaku untuk

CreateInstanceFrom(String, String, Object[])

Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
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

Parameter

assemblyFile
String

Nama, termasuk jalur, file yang berisi rakitan yang menentukan jenis yang diminta. Rakitan dimuat menggunakan LoadFrom(String) metode .

typeName
String

Nama yang sepenuhnya memenuhi syarat dari jenis yang diminta, termasuk namespace tetapi bukan assembly, seperti yang dikembalikan oleh FullName properti .

activationAttributes
Object[]

Array dari satu atau beberapa atribut yang dapat berpartisipasi dalam aktivasi. Biasanya, array yang berisi satu UrlAttribute objek yang menentukan URL yang diperlukan untuk mengaktifkan objek jarak jauh.

Parameter ini terkait dengan objek yang diaktifkan klien. Aktivasi klien adalah teknologi warisan yang dipertahankan untuk kompatibilitas mundur tetapi tidak direkomendasikan untuk pengembangan baru. Aplikasi terdistribusi harus menggunakan Windows Communication Foundation.

Mengembalikan

Objek yang merupakan pembungkus untuk instans baru, atau null jika typeName tidak ditemukan. Nilai yang dikembalikan perlu dibongkar untuk mengakses objek nyata.

Penerapan

Atribut

Pengecualian

assemblyFile adalah null.

assemblyFile tidak ditemukan.

typeName tidak ditemukan di assemblyFile.

Pemanggil tidak memiliki izin yang memadai untuk memanggil konstruktor ini.

Tidak ditemukan konstruktor publik yang cocok.

Pemanggil tidak dapat menyediakan atribut aktivasi untuk objek yang tidak mewarisi dari MarshalByRefObject.

Operasi ini dicoba pada domain aplikasi yang tidak dimuat.

assemblyFile bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Rakitan atau modul dimuat dua kali dengan dua bukti yang berbeda.

Instans ini adalah null.

Keterangan

Konstruktor tanpa parameter untuk typeName dipanggil.

Untuk informasi selengkapnya tentang metode ini, lihat Activator.CreateInstanceFrom metode .

CreateInstanceFrom Ketika metode digunakan untuk membuat instans di domain aplikasi target, selain domain aplikasi tempat panggilan dilakukan, assembly dimuat di domain aplikasi target. Namun, jika instans tidak dibungkus dalam domain aplikasi panggilan, menggunakan instans yang tidak dibungkus dengan cara tertentu dapat menyebabkan perakitan dimuat ke dalam domain aplikasi panggilan. Misalnya, setelah instans dibongkar, informasi jenisnya mungkin diminta, untuk memanggil metodenya yang terlambat terikat. Ketika rakitan dimuat ke dalam domain aplikasi panggilan, pengecualian dapat terjadi.

  • Jika versi lain dari rakitan yang sama sebelumnya dimuat ke domain aplikasi panggilan, atau jika jalur beban domain aplikasi panggilan berbeda dari domain aplikasi target, pengecualian seperti MissingMethodException dapat terjadi.

  • Jika domain aplikasi panggilan melakukan panggilan awal ke jenis instans, InvalidCastException dapat dilemparkan ketika upaya dilakukan untuk melemparkan instans.

Lihat juga

Berlaku untuk

CreateInstanceFrom(String, String)

Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs
Sumber:
AppDomain.cs

Membuat instans baru dari jenis yang ditentukan dalam file rakitan yang ditentukan.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
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

Parameter

assemblyFile
String

Nama, termasuk jalur, file yang berisi rakitan yang menentukan jenis yang diminta. Rakitan dimuat menggunakan LoadFrom(String) metode .

typeName
String

Nama yang sepenuhnya memenuhi syarat dari jenis yang diminta, termasuk namespace tetapi bukan assembly, seperti yang dikembalikan oleh FullName properti .

Mengembalikan

Objek yang merupakan pembungkus untuk instans baru, atau null jika typeName tidak ditemukan. Nilai yang dikembalikan perlu dibongkar untuk mengakses objek nyata.

Penerapan

Atribut

Pengecualian

assemblyFile adalah null.

-atau-

typeName adalah null.

assemblyFile tidak ditemukan.

typeName tidak ditemukan di assemblyFile.

Operasi ini dicoba pada domain aplikasi yang tidak dimuat.

Tidak ada konstruktor publik tanpa parameter yang ditemukan.

Pemanggil tidak memiliki izin yang memadai untuk memanggil konstruktor ini.

assemblyFile bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Rakitan atau modul dimuat dua kali dengan dua bukti yang berbeda.

Instans ini adalah null.

Contoh

Contoh berikut menunjukkan cara menggunakan CreateInstanceFrom(String, String) metode kelebihan beban untuk membuat instans objek di domain aplikasi target dan memanggil metodenya.

Contoh mendefinisikan MarshalableExample kelas, yang dapat dirusak di seluruh batas domain aplikasi. Contoh ini membangun jalur ke rakitan yang sedang dijalankan, membuat domain aplikasi target, dan menggunakan metode kelebihan beban untuk memuat perakitan contoh ke domain aplikasi target dan membuat instans CreateInstanceFrom(String, String)MarshalableExample.

Nota

Jalur ini absolut dalam contoh ini, tetapi jalur relatif juga akan berfungsi karena Assembly.LoadFrom metode ini digunakan untuk memuat rakitan.

Setelah membuka bungkus handel objek, contoh menunjukkan tiga cara untuk menggunakan objek di domain aplikasi target:

  • Memanggil metode dengan pengikatan terlambat, menggunakan pantulan. Ini memerlukan informasi jenis, yang menyebabkan perakitan dimuat ke dalam domain aplikasi pemanggil. (Dalam contoh ini, sudah dimuat.)

  • Transmisikan objek ke antarmuka yang diketahui oleh penelepon dan penerima panggilan. Jika antarmuka didefinisikan dalam rakitan panggilan atau di rakitan ketiga yang direferensikan oleh penelepon dan penerima panggilan, rakitan yang disebut tidak dimuat ke dalam domain aplikasi pemanggil.

  • Menggunakan objek secara langsung ketika jenisnya diketahui oleh pemanggil. Rakitan harus dimuat ke dalam domain aplikasi pemanggil.

Cara lain untuk menghindari pemuatan rakitan yang disebut ke domain aplikasi pemanggil adalah agar pemanggil berasal dari MarshalByRefObject kelas dan untuk menentukan metode yang dapat dijalankan di domain aplikasi target. Metode tersebut dapat menggunakan refleksi untuk memeriksa rakitan target, karena rakitan target sudah dimuat ke dalam domain aplikasi target. Lihat contoh untuk DynamicDirectory properti .

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'!

Keterangan

Konstruktor tanpa parameter untuk typeName dipanggil.

Untuk informasi selengkapnya, lihat metode Activator.CreateInstanceFrom.

CreateInstanceFrom Ketika metode digunakan untuk membuat instans di domain aplikasi target, selain domain aplikasi tempat panggilan dilakukan, assembly dimuat di domain aplikasi target. Namun, jika instans tidak dibungkus dalam domain aplikasi panggilan, menggunakan instans yang tidak dibungkus dengan cara tertentu dapat menyebabkan perakitan dimuat ke dalam domain aplikasi panggilan. Misalnya, setelah instans dibongkar, informasi jenisnya mungkin diminta, untuk memanggil metodenya yang terlambat terikat. Ketika rakitan dimuat ke dalam domain aplikasi panggilan, pengecualian dapat terjadi.

  • Jika versi lain dari rakitan yang sama sebelumnya dimuat ke domain aplikasi panggilan, atau jika jalur beban domain aplikasi panggilan berbeda dari domain aplikasi target, pengecualian seperti MissingMethodException dapat terjadi.

  • Jika domain aplikasi panggilan melakukan panggilan awal ke jenis instans, InvalidCastException dapat dilemparkan ketika upaya dilakukan untuk melemparkan instans.

Lihat juga

Berlaku untuk