Condividi tramite


AppDomain.CreateInstanceFrom Metodo

Definizione

Crea una nuova istanza di un tipo specificato definito nel file di assembly specificato.

Overload

Nome Descrizione
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoleti.

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateInstanceFrom(String, String, Object[])

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

CreateInstanceFrom(String, String)

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Attenzione

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.

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Parametri

assemblyFile
String

Nome, incluso il percorso, di un file contenente un assembly che definisce il tipo richiesto. L'assembly viene caricato usando il LoadFrom(String) metodo .

typeName
String

Nome completo del tipo richiesto, incluso lo spazio dei nomi ma non l'assembly, come restituito dalla FullName proprietà .

ignoreCase
Boolean

Valore booleano che specifica se eseguire o meno una ricerca con distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del typeName costruttore. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che consente l'associazione, la coercizione dei tipi di argomento, la chiamata di membri e il recupero di MemberInfo oggetti tramite reflection. Se binder è Null, viene usato il gestore di associazione predefinito.

args
Object[]

Argomenti da passare al costruttore. Questa matrice di argomenti deve corrispondere in numero, ordine e digitare i parametri del costruttore da richiamare. Se si preferisce il costruttore senza parametri, args deve essere una matrice vuota o null.

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il typeName costruttore. Se culture è null, viene utilizzato per CultureInfo il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. In genere, una matrice che contiene un singolo UrlAttribute oggetto che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

securityAttributes
Evidence

Informazioni utilizzate per autorizzare la creazione di typeName.

Restituisce

Oggetto che è un wrapper per la nuova istanza o null se typeName non viene trovato. Per accedere all'oggetto reale, è necessario rimuovere il wrapping del valore restituito.

Implementazioni

Attributi

Eccezioni

assemblyFile è null.

oppure

typeName è null.

Il chiamante non può fornire attributi di attivazione per un oggetto che non eredita da MarshalByRefObject.

oppure

securityAttributes non nullè . Quando i criteri CAS legacy non sono abilitati, securityAttributes devono essere null.

L'operazione viene tentata in un dominio applicazione scaricato.

assemblyFile non è stato trovato.

typeName non è stato trovato in assemblyFile.

Non è stato trovato alcun costruttore pubblico corrispondente.

Il chiamante non dispone di autorizzazioni sufficienti per chiamare questo costruttore.

assemblyFile non è un assembly valido per il runtime attualmente caricato.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

Questa istanza è null.

Commenti

Per altre informazioni su questo metodo, vedere il Activator.CreateInstanceFrom metodo .

Quando il CreateInstanceFrom metodo viene usato per creare un'istanza in un dominio applicazione di destinazione, diverso dal dominio dell'applicazione da cui viene eseguita la chiamata, l'assembly viene caricato nel dominio applicazione di destinazione. Tuttavia, se l'istanza viene annullata nel dominio applicazione chiamante, l'uso dell'istanza non di cui è stato eseguito il wrapping può causare il caricamento dell'assembly nel dominio applicazione chiamante. Ad esempio, dopo l'annullamento del wrapping dell'istanza, è possibile che vengano richieste informazioni sul tipo per chiamare i relativi metodi con associazione tardiva. Quando l'assembly viene caricato nel dominio applicazione chiamante, possono verificarsi eccezioni.

  • Se un'altra versione dello stesso assembly è stata precedentemente caricata nel dominio applicazione chiamante o se il percorso di caricamento del dominio applicazione chiamante è diverso da quello del dominio applicazione di destinazione, possono verificarsi eccezioni come.MissingMethodException

  • Se il dominio applicazione chiamante effettua chiamate con associazione anticipata al tipo di istanza, InvalidCastException può essere generato quando viene effettuato un tentativo di eseguire il cast dell'istanza.

Vedi anche

Si applica a

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

Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Parametri

assemblyFile
String

Nome, incluso il percorso, di un file contenente un assembly che definisce il tipo richiesto. L'assembly viene caricato usando il LoadFrom(String) metodo .

typeName
String

Nome completo del tipo richiesto, incluso lo spazio dei nomi ma non l'assembly, come restituito dalla FullName proprietà .

ignoreCase
Boolean

Valore booleano che specifica se eseguire o meno una ricerca con distinzione tra maiuscole e minuscole.

bindingAttr
BindingFlags

Combinazione di zero o più flag di bit che influiscono sulla ricerca del typeName costruttore. Se bindingAttr è zero, viene eseguita una ricerca con distinzione tra maiuscole e minuscole per i costruttori pubblici.

binder
Binder

Oggetto che consente l'associazione, la coercizione dei tipi di argomento, la chiamata di membri e il recupero di MemberInfo oggetti tramite reflection. Se binder è Null, viene usato il gestore di associazione predefinito.

args
Object[]

Argomenti da passare al costruttore. Questa matrice di argomenti deve corrispondere in numero, ordine e digitare i parametri del costruttore da richiamare. Se si preferisce il costruttore senza parametri, args deve essere una matrice vuota o null.

culture
CultureInfo

Informazioni specifiche delle impostazioni cultura che regolano la coercizione di args ai tipi formali dichiarati per il typeName costruttore. Se culture è null, viene utilizzato per CultureInfo il thread corrente.

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. In genere, una matrice che contiene un singolo UrlAttribute oggetto che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Oggetto che è un wrapper per la nuova istanza o null se typeName non viene trovato. Per accedere all'oggetto reale, è necessario rimuovere il wrapping del valore restituito.

Attributi

Eccezioni

assemblyFile è null.

oppure

typeName è null.

Il chiamante non può fornire attributi di attivazione per un oggetto che non eredita da MarshalByRefObject.

L'operazione viene tentata in un dominio applicazione scaricato.

assemblyFile non è stato trovato.

typeName non è stato trovato in assemblyFile.

Non è stato trovato alcun costruttore pubblico corrispondente.

Il chiamante non dispone di autorizzazioni sufficienti per chiamare questo costruttore.

assemblyFile non è un assembly valido per il runtime attualmente caricato.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

Questa istanza è null.

Commenti

Per altre informazioni, vedere il metodo Activator.CreateInstanceFrom.

Quando il CreateInstanceFrom metodo viene usato per creare un'istanza in un dominio applicazione di destinazione, diverso dal dominio dell'applicazione da cui viene eseguita la chiamata, l'assembly viene caricato nel dominio applicazione di destinazione. Tuttavia, se l'istanza viene annullata nel dominio applicazione chiamante, l'uso dell'istanza non di cui è stato eseguito il wrapping può causare il caricamento dell'assembly nel dominio applicazione chiamante. Ad esempio, dopo l'annullamento del wrapping dell'istanza, è possibile che vengano richieste informazioni sul tipo per chiamare i relativi metodi con associazione tardiva. Quando l'assembly viene caricato nel dominio applicazione chiamante, possono verificarsi eccezioni.

  • Se un'altra versione dello stesso assembly è stata precedentemente caricata nel dominio applicazione chiamante o se il percorso di caricamento del dominio applicazione chiamante è diverso da quello del dominio applicazione di destinazione, possono verificarsi eccezioni come.MissingMethodException

  • Se il dominio applicazione chiamante effettua chiamate con associazione anticipata al tipo di istanza, InvalidCastException può essere generato quando viene effettuato un tentativo di eseguire il cast dell'istanza.

Vedi anche

Si applica a

CreateInstanceFrom(String, String, Object[])

Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Parametri

assemblyFile
String

Nome, incluso il percorso, di un file contenente un assembly che definisce il tipo richiesto. L'assembly viene caricato usando il LoadFrom(String) metodo .

typeName
String

Nome completo del tipo richiesto, incluso lo spazio dei nomi ma non l'assembly, come restituito dalla FullName proprietà .

activationAttributes
Object[]

Matrice di uno o più attributi che possono partecipare all'attivazione. In genere, una matrice che contiene un singolo UrlAttribute oggetto che specifica l'URL necessario per attivare un oggetto remoto.

Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.

Restituisce

Oggetto che è un wrapper per la nuova istanza o null se typeName non viene trovato. Per accedere all'oggetto reale, è necessario rimuovere il wrapping del valore restituito.

Implementazioni

Attributi

Eccezioni

assemblyFile è null.

assemblyFile non è stato trovato.

typeName non è stato trovato in assemblyFile.

Il chiamante non dispone di autorizzazioni sufficienti per chiamare questo costruttore.

Non è stato trovato alcun costruttore pubblico corrispondente.

Il chiamante non può fornire attributi di attivazione per un oggetto che non eredita da MarshalByRefObject.

L'operazione viene tentata in un dominio applicazione scaricato.

assemblyFile non è un assembly valido per il runtime attualmente caricato.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

Questa istanza è null.

Commenti

Viene richiamato il costruttore senza parametri per typeName .

Per altre informazioni su questo metodo, vedere il Activator.CreateInstanceFrom metodo .

Quando il CreateInstanceFrom metodo viene usato per creare un'istanza in un dominio applicazione di destinazione, diverso dal dominio dell'applicazione da cui viene eseguita la chiamata, l'assembly viene caricato nel dominio applicazione di destinazione. Tuttavia, se l'istanza viene annullata nel dominio applicazione chiamante, l'uso dell'istanza non di cui è stato eseguito il wrapping può causare il caricamento dell'assembly nel dominio applicazione chiamante. Ad esempio, dopo l'annullamento del wrapping dell'istanza, è possibile che vengano richieste informazioni sul tipo per chiamare i relativi metodi con associazione tardiva. Quando l'assembly viene caricato nel dominio applicazione chiamante, possono verificarsi eccezioni.

  • Se un'altra versione dello stesso assembly è stata precedentemente caricata nel dominio applicazione chiamante o se il percorso di caricamento del dominio applicazione chiamante è diverso da quello del dominio applicazione di destinazione, possono verificarsi eccezioni come.MissingMethodException

  • Se il dominio applicazione chiamante effettua chiamate con associazione anticipata al tipo di istanza, InvalidCastException può essere generato quando viene effettuato un tentativo di eseguire il cast dell'istanza.

Vedi anche

Si applica a

CreateInstanceFrom(String, String)

Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs
Origine:
AppDomain.cs

Crea una nuova istanza del tipo specificato definito nel file di assembly specificato.

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

Parametri

assemblyFile
String

Nome, incluso il percorso, di un file contenente un assembly che definisce il tipo richiesto. L'assembly viene caricato usando il LoadFrom(String) metodo .

typeName
String

Nome completo del tipo richiesto, incluso lo spazio dei nomi ma non l'assembly, come restituito dalla FullName proprietà .

Restituisce

Oggetto che è un wrapper per la nuova istanza o null se typeName non viene trovato. Per accedere all'oggetto reale, è necessario rimuovere il wrapping del valore restituito.

Implementazioni

Attributi

Eccezioni

assemblyFile è null.

oppure

typeName è null.

assemblyFile non è stato trovato.

typeName non è stato trovato in assemblyFile.

L'operazione viene tentata in un dominio applicazione scaricato.

Non è stato trovato alcun costruttore pubblico senza parametri.

Il chiamante non dispone di autorizzazioni sufficienti per chiamare questo costruttore.

assemblyFile non è un assembly valido per il runtime attualmente caricato.

Un assembly o un modulo è stato caricato due volte con due prove diverse.

Questa istanza è null.

Esempio

Nell'esempio seguente viene illustrato come usare l'overload del CreateInstanceFrom(String, String) metodo per creare un'istanza di un oggetto in un dominio applicazione di destinazione e chiamare i relativi metodi.

L'esempio definisce la MarshalableExample classe , che può essere sottoposto a marshalling tra i limiti del dominio applicazione. Nell'esempio viene compilato un percorso dell'assembly attualmente in esecuzione, viene creato un dominio applicazione di destinazione e viene usato l'overload del CreateInstanceFrom(String, String) metodo per caricare l'assembly di esempio nel dominio dell'applicazione di destinazione e creare un'istanza di MarshalableExample.

Annotazioni

Il percorso è assoluto in questo esempio, ma un percorso relativo funziona anche perché il Assembly.LoadFrom metodo viene usato per caricare l'assembly.

Dopo l'annullamento del wrapping dell'handle dell'oggetto, nell'esempio vengono illustrati tre modi per usare un oggetto in un dominio applicazione di destinazione:

  • Richiamare un metodo con associazione tardiva, usando la reflection. Ciò richiede informazioni sul tipo, che causa il caricamento dell'assembly nel dominio applicazione del chiamante. In questo esempio è già caricato.

  • Cast dell'oggetto in un'interfaccia nota sia al chiamante che al chiamato. Se l'interfaccia viene definita nell'assembly chiamante o in un terzo assembly a cui fa riferimento sia il chiamante che il chiamato, l'assembly chiamato non viene caricato nel dominio applicazione del chiamante.

  • Utilizzo diretto dell'oggetto quando il tipo è noto al chiamante. L'assembly deve essere caricato nel dominio applicazione del chiamante.

Un altro modo per evitare di caricare l'assembly chiamato nel dominio applicazione del chiamante consiste nel fare in modo che il chiamante derivi dalla MarshalByRefObject classe e definisci un metodo che può essere eseguito nel dominio dell'applicazione di destinazione. Questo metodo può usare la reflection per esaminare un assembly di destinazione, perché l'assembly di destinazione è già caricato nel dominio dell'applicazione di destinazione. Vedere l'esempio per la DynamicDirectory proprietà .

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

Commenti

Viene richiamato il costruttore senza parametri per typeName .

Per altre informazioni, vedere il metodo Activator.CreateInstanceFrom.

Quando il CreateInstanceFrom metodo viene usato per creare un'istanza in un dominio applicazione di destinazione, diverso dal dominio dell'applicazione da cui viene eseguita la chiamata, l'assembly viene caricato nel dominio applicazione di destinazione. Tuttavia, se l'istanza viene annullata nel dominio applicazione chiamante, l'uso dell'istanza non di cui è stato eseguito il wrapping può causare il caricamento dell'assembly nel dominio applicazione chiamante. Ad esempio, dopo l'annullamento del wrapping dell'istanza, è possibile che vengano richieste informazioni sul tipo per chiamare i relativi metodi con associazione tardiva. Quando l'assembly viene caricato nel dominio applicazione chiamante, possono verificarsi eccezioni.

  • Se un'altra versione dello stesso assembly è stata precedentemente caricata nel dominio applicazione chiamante o se il percorso di caricamento del dominio applicazione chiamante è diverso da quello del dominio applicazione di destinazione, possono verificarsi eccezioni come.MissingMethodException

  • Se il dominio applicazione chiamante effettua chiamate con associazione anticipata al tipo di istanza, InvalidCastException può essere generato quando viene effettuato un tentativo di eseguire il cast dell'istanza.

Vedi anche

Si applica a