AppDomain.CreateInstanceFrom Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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
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 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.