Aracılığıyla paylaş


AppDomain.CreateInstanceFrom Yöntem

Tanım

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

Aşırı Yüklemeler

Name Description
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Geçersiz.

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

CreateInstanceFrom(String, String, Object[])

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

CreateInstanceFrom(String, String)

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Dikkat

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.

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Parametreler

assemblyFile
String

İstenen türü tanımlayan bir derleme içeren dosyanın yolu da dahil olmak üzere adı. Derleme yöntemi kullanılarak LoadFrom(String) yüklenir.

typeName
String

ad alanı dahil ancak özelliği tarafından FullName döndürülen derleme dahil olmak üzere istenen türün tam adı.

ignoreCase
Boolean

Büyük/küçük harfe duyarlı arama yapılıp yapılmayacağını belirten boole değeri.

bindingAttr
BindingFlags

Oluşturucu aramasını etkileyen sıfır veya daha fazla bit bayrağının typeName birleşimi. Sıfır ise bindingAttr , ortak oluşturucular için büyük/küçük harfe duyarlı bir arama yapılır.

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma aracılığıyla almayı MemberInfo sağlayan nesne. Null ise binder , varsayılan bağlayıcı kullanılır.

args
Object[]

Oluşturucuya geçirecek bağımsız değişkenler. Bu bağımsız değişken dizisi, çağrılacak oluşturucunun parametreleriyle sayı, sıra ve tür olarak eşleşmelidir. Parametresiz oluşturucu tercih edilirse, args boş bir dizi veya null olmalıdır.

culture
CultureInfo

Oluşturucu için typeName bildirilen resmi türlerle zorlamasını args yöneten kültüre özgü bilgiler. ise culturenull, CultureInfo geçerli iş parçacığı için kullanılır.

activationAttributes
Object[]

Etkinleştirmeye katılabilen bir veya daha fazla öznitelik dizisi. Genellikle, uzak bir nesneyi etkinleştirmek için gereken URL'yi belirten tek UrlAttribute bir nesne içeren dizi.

Bu parametre istemci tarafından etkinleştirilen nesnelerle ilgilidir. İstemci etkinleştirmesi, geriye dönük uyumluluk için korunan ancak yeni geliştirme için önerilmez eski bir teknolojidir. Dağıtılmış uygulamalar bunun yerine Windows Communication Foundation kullanmalıdır.

securityAttributes
Evidence

oluşturulmasını typeNameyetkilendirmek için kullanılan bilgiler.

Döndürülenler

Yeni örnek için sarmalayıcı olan veya null bulunamazsa typeName nesne. Gerçek nesneye erişmek için dönüş değerinin eşlenmemiş olması gerekir.

Uygulamalar

Öznitelikler

Özel durumlar

assemblyFile, null'e eşittir.

-veya-

typeName, null'e eşittir.

Çağıran, öğesinden MarshalByRefObjectdevralmayan bir nesne için etkinleştirme öznitelikleri sağlayamaz.

-veya-

securityAttributes değil null. Eski CAS ilkesi etkinleştirilmediğinde olmalıdır securityAttributesnull.

İşlem, kaldırılmış bir uygulama etki alanında denendi.

assemblyFile bulunamadı.

typeName içinde assemblyFilebulunamadı.

Eşleşen ortak oluşturucu bulunamadı.

Çağıranın bu oluşturucuyu çağırmak için yeterli izni yok.

assemblyFile şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.

Derleme veya modül iki farklı kanıtla iki kez yüklendi.

Bu örnek şeklindedir null.

Açıklamalar

Bu yöntem hakkında daha fazla bilgi için yöntemine Activator.CreateInstanceFrom bakın.

yöntemi, çağrının CreateInstanceFrom yapıldığı uygulama etki alanı dışında bir hedef uygulama etki alanında bir örnek oluşturmak için kullanıldığında, derleme hedef uygulama etki alanına yüklenir. Ancak, örnek çağıran uygulama etki alanında unwrapped ise, unwrapped örneğini belirli şekillerde kullanmak derlemenin çağıran uygulama etki alanına yüklenmesine neden olabilir. Örneğin, örnek eşlenmemiş durumdan sonra yöntemlerini geç bağlı olarak çağırmak için tür bilgileri istenebilir. Derleme çağıran uygulama etki alanına yüklendiğinde özel durumlar oluşabilir.

  • Aynı derlemenin başka bir sürümü daha önce çağıran uygulama etki alanına yüklendiyse veya çağıran uygulama etki alanının yük yolu hedef uygulama etki alanından farklıysa, gibi MissingMethodException özel durumlar oluşabilir.

  • Çağıran uygulama etki alanı örnek türüne erken bağlı çağrılar yaparsa, InvalidCastException örneği atama girişiminde bulunulduğunda oluşturulabilir.

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Parametreler

assemblyFile
String

İstenen türü tanımlayan bir derleme içeren dosyanın yolu da dahil olmak üzere adı. Derleme yöntemi kullanılarak LoadFrom(String) yüklenir.

typeName
String

ad alanı dahil ancak özelliği tarafından FullName döndürülen derleme dahil olmak üzere istenen türün tam adı.

ignoreCase
Boolean

Büyük/küçük harfe duyarlı arama yapılıp yapılmayacağını belirten boole değeri.

bindingAttr
BindingFlags

Oluşturucu aramasını etkileyen sıfır veya daha fazla bit bayrağının typeName birleşimi. Sıfır ise bindingAttr , ortak oluşturucular için büyük/küçük harfe duyarlı bir arama yapılır.

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma aracılığıyla almayı MemberInfo sağlayan nesne. Null ise binder , varsayılan bağlayıcı kullanılır.

args
Object[]

Oluşturucuya geçirecek bağımsız değişkenler. Bu bağımsız değişken dizisi, çağrılacak oluşturucunun parametreleriyle sayı, sıra ve tür olarak eşleşmelidir. Parametresiz oluşturucu tercih edilirse, args boş bir dizi veya null olmalıdır.

culture
CultureInfo

Oluşturucu için typeName bildirilen resmi türlerle zorlamasını args yöneten kültüre özgü bilgiler. ise culturenull, CultureInfo geçerli iş parçacığı için kullanılır.

activationAttributes
Object[]

Etkinleştirmeye katılabilen bir veya daha fazla öznitelik dizisi. Genellikle, uzak bir nesneyi etkinleştirmek için gereken URL'yi belirten tek UrlAttribute bir nesne içeren dizi.

Bu parametre istemci tarafından etkinleştirilen nesnelerle ilgilidir. İstemci etkinleştirmesi, geriye dönük uyumluluk için korunan ancak yeni geliştirme için önerilmez eski bir teknolojidir. Dağıtılmış uygulamalar bunun yerine Windows Communication Foundation kullanmalıdır.

Döndürülenler

Yeni örnek için sarmalayıcı olan veya null bulunamazsa typeName nesne. Gerçek nesneye erişmek için dönüş değerinin eşlenmemiş olması gerekir.

Öznitelikler

Özel durumlar

assemblyFile, null'e eşittir.

-veya-

typeName, null'e eşittir.

Çağıran, öğesinden MarshalByRefObjectdevralmayan bir nesne için etkinleştirme öznitelikleri sağlayamaz.

İşlem, kaldırılmış bir uygulama etki alanında denendi.

assemblyFile bulunamadı.

typeName içinde assemblyFilebulunamadı.

Eşleşen ortak oluşturucu bulunamadı.

Çağıranın bu oluşturucuyu çağırmak için yeterli izni yok.

assemblyFile şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.

Derleme veya modül iki farklı kanıtla iki kez yüklendi.

Bu örnek şeklindedir null.

Açıklamalar

Daha fazla bilgi için bkz. Activator.CreateInstanceFrom yöntemi.

yöntemi, çağrının CreateInstanceFrom yapıldığı uygulama etki alanı dışında bir hedef uygulama etki alanında bir örnek oluşturmak için kullanıldığında, derleme hedef uygulama etki alanına yüklenir. Ancak, örnek çağıran uygulama etki alanında unwrapped ise, unwrapped örneğini belirli şekillerde kullanmak derlemenin çağıran uygulama etki alanına yüklenmesine neden olabilir. Örneğin, örnek eşlenmemiş durumdan sonra yöntemlerini geç bağlı olarak çağırmak için tür bilgileri istenebilir. Derleme çağıran uygulama etki alanına yüklendiğinde özel durumlar oluşabilir.

  • Aynı derlemenin başka bir sürümü daha önce çağıran uygulama etki alanına yüklendiyse veya çağıran uygulama etki alanının yük yolu hedef uygulama etki alanından farklıysa, gibi MissingMethodException özel durumlar oluşabilir.

  • Çağıran uygulama etki alanı örnek türüne erken bağlı çağrılar yaparsa, InvalidCastException örneği atama girişiminde bulunulduğunda oluşturulabilir.

Ayrıca bkz.

Şunlara uygulanır

CreateInstanceFrom(String, String, Object[])

Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Parametreler

assemblyFile
String

İstenen türü tanımlayan bir derleme içeren dosyanın yolu da dahil olmak üzere adı. Derleme yöntemi kullanılarak LoadFrom(String) yüklenir.

typeName
String

ad alanı dahil ancak özelliği tarafından FullName döndürülen derleme dahil olmak üzere istenen türün tam adı.

activationAttributes
Object[]

Etkinleştirmeye katılabilen bir veya daha fazla öznitelik dizisi. Genellikle, uzak bir nesneyi etkinleştirmek için gereken URL'yi belirten tek UrlAttribute bir nesne içeren dizi.

Bu parametre istemci tarafından etkinleştirilen nesnelerle ilgilidir. İstemci etkinleştirmesi, geriye dönük uyumluluk için korunan ancak yeni geliştirme için önerilmez eski bir teknolojidir. Dağıtılmış uygulamalar bunun yerine Windows Communication Foundation kullanmalıdır.

Döndürülenler

Yeni örnek için sarmalayıcı olan veya null bulunamazsa typeName nesne. Gerçek nesneye erişmek için dönüş değerinin eşlenmemiş olması gerekir.

Uygulamalar

Öznitelikler

Özel durumlar

assemblyFile, null'e eşittir.

assemblyFile bulunamadı.

typeName içinde assemblyFilebulunamadı.

Çağıranın bu oluşturucuyu çağırmak için yeterli izni yok.

Eşleşen ortak oluşturucu bulunamadı.

Çağıran, öğesinden MarshalByRefObjectdevralmayan bir nesne için etkinleştirme öznitelikleri sağlayamaz.

İşlem, kaldırılmış bir uygulama etki alanında denendi.

assemblyFile şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.

Derleme veya modül iki farklı kanıtla iki kez yüklendi.

Bu örnek şeklindedir null.

Açıklamalar

için typeName parametresiz oluşturucu çağrılır.

Bu yöntem hakkında daha fazla bilgi için yöntemine Activator.CreateInstanceFrom bakın.

yöntemi, çağrının CreateInstanceFrom yapıldığı uygulama etki alanı dışında bir hedef uygulama etki alanında bir örnek oluşturmak için kullanıldığında, derleme hedef uygulama etki alanına yüklenir. Ancak, örnek çağıran uygulama etki alanında unwrapped ise, unwrapped örneğini belirli şekillerde kullanmak derlemenin çağıran uygulama etki alanına yüklenmesine neden olabilir. Örneğin, örnek eşlenmemiş durumdan sonra yöntemlerini geç bağlı olarak çağırmak için tür bilgileri istenebilir. Derleme çağıran uygulama etki alanına yüklendiğinde özel durumlar oluşabilir.

  • Aynı derlemenin başka bir sürümü daha önce çağıran uygulama etki alanına yüklendiyse veya çağıran uygulama etki alanının yük yolu hedef uygulama etki alanından farklıysa, gibi MissingMethodException özel durumlar oluşabilir.

  • Çağıran uygulama etki alanı örnek türüne erken bağlı çağrılar yaparsa, InvalidCastException örneği atama girişiminde bulunulduğunda oluşturulabilir.

Ayrıca bkz.

Şunlara uygulanır

CreateInstanceFrom(String, String)

Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs
Kaynak:
AppDomain.cs

Belirtilen derleme dosyasında tanımlanan belirtilen türün yeni bir örneğini oluşturur.

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

Parametreler

assemblyFile
String

İstenen türü tanımlayan bir derleme içeren dosyanın yolu da dahil olmak üzere adı. Derleme yöntemi kullanılarak LoadFrom(String) yüklenir.

typeName
String

ad alanı dahil ancak özelliği tarafından FullName döndürülen derleme dahil olmak üzere istenen türün tam adı.

Döndürülenler

Yeni örnek için sarmalayıcı olan veya null bulunamazsa typeName nesne. Gerçek nesneye erişmek için dönüş değerinin eşlenmemiş olması gerekir.

Uygulamalar

Öznitelikler

Özel durumlar

assemblyFile, null'e eşittir.

-veya-

typeName, null'e eşittir.

assemblyFile bulunamadı.

typeName içinde assemblyFilebulunamadı.

İşlem, kaldırılmış bir uygulama etki alanında denendi.

Parametresiz ortak oluşturucu bulunamadı.

Çağıranın bu oluşturucuyu çağırmak için yeterli izni yok.

assemblyFile şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.

Derleme veya modül iki farklı kanıtla iki kez yüklendi.

Bu örnek şeklindedir null.

Örnekler

Aşağıdaki örnekte, hedef uygulama etki alanında bir nesnenin örneğini oluşturmak ve yöntemlerini çağırmak için yöntem aşırı yüklemesinin nasıl kullanılacağı CreateInstanceFrom(String, String) gösterilmektedir.

Örnek, uygulama etki alanı sınırları arasında sıralanabilen sınıfı tanımlar MarshalableExample . Örnek, şu anda yürütülen derlemenin yolunu oluşturur, bir hedef uygulama etki alanı oluşturur ve yöntem aşırı yüklemesini kullanarak CreateInstanceFrom(String, String) örnek derlemeyi hedef uygulama etki alanına yükler ve örneğini MarshalableExampleoluşturur.

Uyarı

Bu örnekte yol mutlaktır, ancak yöntemi derlemeyi yüklemek için kullanıldığından Assembly.LoadFrom göreli yol da çalışır.

Nesne tutamacını kaldırdıktan sonra, örnek bir nesneyi hedef uygulama etki alanında kullanmanın üç yolunu gösterir:

  • Yansıma kullanarak geç bağlama ile bir yöntemi çağırma. Bunun için tür bilgileri gerekir ve bu da derlemenin çağıranın uygulama etki alanına yüklenmesine neden olur. (Bu örnekte zaten yüklenmiştir.)

  • Nesnesini hem çağıran hem de çağıran tarafından bilinen bir arabirime atama. Arabirim çağıran derlemede veya hem çağıran hem de çağıran tarafından başvurulan üçüncü bir derlemede tanımlanmışsa, çağrılan derleme çağıranın uygulama etki alanına yüklenmez.

  • Türü çağıran tarafından bilindiğinde nesneyi doğrudan kullanma. Derleme, çağıranın uygulama etki alanına yüklenmelidir.

Çağrılan derlemeyi çağıranın uygulama etki alanına yüklemekten kaçınmanın bir diğer yolu da çağıranın sınıfından MarshalByRefObject türetilmesi ve hedef uygulama etki alanında çalıştırılabilir bir yöntem tanımlamasıdır. Hedef derleme hedef uygulama etki alanına zaten yüklendiğinden, bu yöntem bir hedef derlemeyi incelemek için yansımayı kullanabilir. Özelliğin örneğine DynamicDirectory bakın.

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

Açıklamalar

için typeName parametresiz oluşturucu çağrılır.

Daha fazla bilgi için bkz. Activator.CreateInstanceFrom yöntemi.

yöntemi, çağrının CreateInstanceFrom yapıldığı uygulama etki alanı dışında bir hedef uygulama etki alanında bir örnek oluşturmak için kullanıldığında, derleme hedef uygulama etki alanına yüklenir. Ancak, örnek çağıran uygulama etki alanında unwrapped ise, unwrapped örneğini belirli şekillerde kullanmak derlemenin çağıran uygulama etki alanına yüklenmesine neden olabilir. Örneğin, örnek eşlenmemiş durumdan sonra yöntemlerini geç bağlı olarak çağırmak için tür bilgileri istenebilir. Derleme çağıran uygulama etki alanına yüklendiğinde özel durumlar oluşabilir.

  • Aynı derlemenin başka bir sürümü daha önce çağıran uygulama etki alanına yüklendiyse veya çağıran uygulama etki alanının yük yolu hedef uygulama etki alanından farklıysa, gibi MissingMethodException özel durumlar oluşabilir.

  • Çağıran uygulama etki alanı örnek türüne erken bağlı çağrılar yaparsa, InvalidCastException örneği atama girişiminde bulunulduğunda oluşturulabilir.

Ayrıca bkz.

Şunlara uygulanır