AppDomain.CreateInstanceFrom Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt eine neue Instanz eines angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.
Überlädt
| Name | Beschreibung |
|---|---|
| CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Veraltet.
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist. |
| CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist. |
| CreateInstanceFrom(String, String, Object[]) |
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist. |
| CreateInstanceFrom(String, String) |
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist. |
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Achtung
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.
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.
public:
virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes, System::Security::Policy::Evidence ^ securityAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
[System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
abstract member CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityAttributes As Evidence) As ObjectHandle
Parameter
- assemblyFile
- String
Der Name, einschließlich des Pfads, einer Datei, die eine Assembly enthält, die den angeforderten Typ definiert. Die Assembly wird mit der LoadFrom(String) Methode geladen.
- typeName
- String
Der vollqualifizierte Name des angeforderten Typs, einschließlich des Namespaces, aber nicht der Assembly, wie von der FullName Eigenschaft zurückgegeben.
- ignoreCase
- Boolean
Ein boolescher Wert, der angibt, ob bei der Suche nach Groß-/Kleinschreibung unterschieden werden soll.
- bindingAttr
- BindingFlags
Eine Kombination aus Null- oder mehr Bitkennzeichnungen, die sich auf die Suche nach dem typeName Konstruktor auswirken. Wenn bindingAttr null ist, wird eine Groß-/Kleinschreibungssuche nach öffentlichen Konstruktoren durchgeführt.
- binder
- Binder
Ein Objekt, das die Bindung, die Koersion von Argumenttypen, den Aufruf von Elementen und das Abrufen von MemberInfo Objekten durch Spiegelung ermöglicht. Wenn binder null ist, wird der Standardbinder verwendet.
- args
- Object[]
Die Argumente, die an den Konstruktor übergeben werden sollen. Dieses Array von Argumenten muss in Zahl, Reihenfolge und Eingabe der Parameter des aufgerufenen Konstruktors übereinstimmen. Wenn der parameterlose Konstruktor bevorzugt wird, args muss es sich um ein leeres Array oder null sein.
- culture
- CultureInfo
Kulturspezifische Informationen, die die Koersion der args für den typeName Konstruktor deklarierten formalen Typen steuern. Ist culture dies nullder Grund, wird der CultureInfo aktuelle Thread verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung teilnehmen können. In der Regel ein Array, das ein einzelnes UrlAttribute Objekt enthält, das die URL angibt, die zum Aktivieren eines Remoteobjekts erforderlich ist.
Dieser Parameter bezieht sich auf clientaktive Objekte. Die Clientaktivierung ist eine ältere Technologie, die aus Gründen der Abwärtskompatibilität beibehalten wird, für die neue Entwicklung jedoch nicht empfohlen wird. Verteilte Anwendungen sollten stattdessen Windows Communication Foundation verwenden.
- securityAttributes
- Evidence
Informationen, die zum Autorisieren der Erstellung von typeName.
Gibt zurück
Ein Objekt, das ein Wrapper für die neue Instanz ist oder null nicht typeName gefunden wird. Der Rückgabewert muss entwrappt werden, um auf das reale Objekt zuzugreifen.
Implementiert
- Attribute
Ausnahmen
Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObject.
- oder -
securityAttributes ist nicht null. Wenn die ältere CAS-Richtlinie nicht aktiviert ist, securityAttributes sollte dies der Wert sein null.
Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.
assemblyFile wurde nicht gefunden.
typeName wurde nicht gefunden in assemblyFile.
Es wurde kein übereinstimmener öffentlicher Konstruktor gefunden.
Der Aufrufer verfügt nicht über ausreichende Berechtigungen, um diesen Konstruktor aufzurufen.
assemblyFile ist keine gültige Assembly für die aktuell geladene Laufzeit.
Eine Assembly oder ein Modul wurde zweimal mit zwei verschiedenen Nachweisen geladen.
Diese Instanz ist null.
Hinweise
Weitere Informationen zu dieser Methode finden Sie in der Activator.CreateInstanceFrom Methode.
Wenn die CreateInstanceFrom Methode verwendet wird, um eine Instanz in einer Zielanwendungsdomäne zu erstellen, außer der Anwendungsdomäne, aus der der Aufruf erfolgt, wird die Assembly in der Zielanwendungsdomäne geladen. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne aufgehoben wird, kann die Verwendung der nicht zugewiesenen Instanz auf bestimmte Weise dazu führen, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird. Nachdem die Instanz beispielsweise entwrappt wurde, können die Typinformationen angefordert werden, um die Methoden spät gebunden aufzurufen. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.
Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde oder sich der Ladepfad der aufrufenden Anwendungsdomäne von der der Zielanwendungsdomäne unterscheidet, können Ausnahmen auftreten MissingMethodException .
Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp sendet, kann ausgelöst werden, wenn versucht wird, InvalidCastException die Instanz zu umwandeln.
Weitere Informationen
Gilt für:
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.
public:
System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle
Parameter
- assemblyFile
- String
Der Name, einschließlich des Pfads, einer Datei, die eine Assembly enthält, die den angeforderten Typ definiert. Die Assembly wird mit der LoadFrom(String) Methode geladen.
- typeName
- String
Der vollqualifizierte Name des angeforderten Typs, einschließlich des Namespaces, aber nicht der Assembly, wie von der FullName Eigenschaft zurückgegeben.
- ignoreCase
- Boolean
Ein boolescher Wert, der angibt, ob bei der Suche nach Groß-/Kleinschreibung unterschieden werden soll.
- bindingAttr
- BindingFlags
Eine Kombination aus Null- oder mehr Bitkennzeichnungen, die sich auf die Suche nach dem typeName Konstruktor auswirken. Wenn bindingAttr null ist, wird eine Groß-/Kleinschreibungssuche nach öffentlichen Konstruktoren durchgeführt.
- binder
- Binder
Ein Objekt, das die Bindung, die Koersion von Argumenttypen, den Aufruf von Elementen und das Abrufen von MemberInfo Objekten durch Spiegelung ermöglicht. Wenn binder null ist, wird der Standardbinder verwendet.
- args
- Object[]
Die Argumente, die an den Konstruktor übergeben werden sollen. Dieses Array von Argumenten muss in Zahl, Reihenfolge und Eingabe der Parameter des aufgerufenen Konstruktors übereinstimmen. Wenn der parameterlose Konstruktor bevorzugt wird, args muss es sich um ein leeres Array oder null sein.
- culture
- CultureInfo
Kulturspezifische Informationen, die die Koersion der args für den typeName Konstruktor deklarierten formalen Typen steuern. Ist culture dies nullder Grund, wird der CultureInfo aktuelle Thread verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung teilnehmen können. In der Regel ein Array, das ein einzelnes UrlAttribute Objekt enthält, das die URL angibt, die zum Aktivieren eines Remoteobjekts erforderlich ist.
Dieser Parameter bezieht sich auf clientaktive Objekte. Die Clientaktivierung ist eine ältere Technologie, die aus Gründen der Abwärtskompatibilität beibehalten wird, für die neue Entwicklung jedoch nicht empfohlen wird. Verteilte Anwendungen sollten stattdessen Windows Communication Foundation verwenden.
Gibt zurück
Ein Objekt, das ein Wrapper für die neue Instanz ist oder null nicht typeName gefunden wird. Der Rückgabewert muss entwrappt werden, um auf das reale Objekt zuzugreifen.
- Attribute
Ausnahmen
Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObject.
Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.
assemblyFile wurde nicht gefunden.
typeName wurde nicht gefunden in assemblyFile.
Es wurde kein übereinstimmener öffentlicher Konstruktor gefunden.
Der Aufrufer verfügt nicht über ausreichende Berechtigungen, um diesen Konstruktor aufzurufen.
assemblyFile ist keine gültige Assembly für die aktuell geladene Laufzeit.
Eine Assembly oder ein Modul wurde zweimal mit zwei verschiedenen Nachweisen geladen.
Diese Instanz ist null.
Hinweise
Weitere Informationen finden Sie in der Activator.CreateInstanceFrom Methode.
Wenn die CreateInstanceFrom Methode verwendet wird, um eine Instanz in einer Zielanwendungsdomäne zu erstellen, außer der Anwendungsdomäne, aus der der Aufruf erfolgt, wird die Assembly in der Zielanwendungsdomäne geladen. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne aufgehoben wird, kann die Verwendung der nicht zugewiesenen Instanz auf bestimmte Weise dazu führen, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird. Nachdem die Instanz beispielsweise entwrappt wurde, können die Typinformationen angefordert werden, um die Methoden spät gebunden aufzurufen. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.
Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde oder sich der Ladepfad der aufrufenden Anwendungsdomäne von der der Zielanwendungsdomäne unterscheidet, können Ausnahmen auftreten MissingMethodException .
Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp sendet, kann ausgelöst werden, wenn versucht wird, InvalidCastException die Instanz zu umwandeln.
Weitere Informationen
Gilt für:
CreateInstanceFrom(String, String, Object[])
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.
public:
System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public:
virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName, object?[]? activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
member this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
abstract member CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, activationAttributes As Object()) As ObjectHandle
Parameter
- assemblyFile
- String
Der Name, einschließlich des Pfads, einer Datei, die eine Assembly enthält, die den angeforderten Typ definiert. Die Assembly wird mit der LoadFrom(String) Methode geladen.
- typeName
- String
Der vollqualifizierte Name des angeforderten Typs, einschließlich des Namespaces, aber nicht der Assembly, wie von der FullName Eigenschaft zurückgegeben.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung teilnehmen können. In der Regel ein Array, das ein einzelnes UrlAttribute Objekt enthält, das die URL angibt, die zum Aktivieren eines Remoteobjekts erforderlich ist.
Dieser Parameter bezieht sich auf clientaktive Objekte. Die Clientaktivierung ist eine ältere Technologie, die aus Gründen der Abwärtskompatibilität beibehalten wird, für die neue Entwicklung jedoch nicht empfohlen wird. Verteilte Anwendungen sollten stattdessen Windows Communication Foundation verwenden.
Gibt zurück
Ein Objekt, das ein Wrapper für die neue Instanz ist oder null nicht typeName gefunden wird. Der Rückgabewert muss entwrappt werden, um auf das reale Objekt zuzugreifen.
Implementiert
- Attribute
Ausnahmen
assemblyFile ist null.
assemblyFile wurde nicht gefunden.
typeName wurde nicht gefunden in assemblyFile.
Der Aufrufer verfügt nicht über ausreichende Berechtigungen, um diesen Konstruktor aufzurufen.
Es wurde kein übereinstimmener öffentlicher Konstruktor gefunden.
Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObject.
Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.
assemblyFile ist keine gültige Assembly für die aktuell geladene Laufzeit.
Eine Assembly oder ein Modul wurde zweimal mit zwei verschiedenen Nachweisen geladen.
Diese Instanz ist null.
Hinweise
Der parameterlose Konstruktor wird typeName aufgerufen.
Weitere Informationen zu dieser Methode finden Sie in der Activator.CreateInstanceFrom Methode.
Wenn die CreateInstanceFrom Methode verwendet wird, um eine Instanz in einer Zielanwendungsdomäne zu erstellen, außer der Anwendungsdomäne, aus der der Aufruf erfolgt, wird die Assembly in der Zielanwendungsdomäne geladen. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne aufgehoben wird, kann die Verwendung der nicht zugewiesenen Instanz auf bestimmte Weise dazu führen, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird. Nachdem die Instanz beispielsweise entwrappt wurde, können die Typinformationen angefordert werden, um die Methoden spät gebunden aufzurufen. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.
Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde oder sich der Ladepfad der aufrufenden Anwendungsdomäne von der der Zielanwendungsdomäne unterscheidet, können Ausnahmen auftreten MissingMethodException .
Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp sendet, kann ausgelöst werden, wenn versucht wird, InvalidCastException die Instanz zu umwandeln.
Weitere Informationen
Gilt für:
CreateInstanceFrom(String, String)
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
- Quelle:
- AppDomain.cs
Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.
public:
System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
public:
virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName);
public System.Runtime.Remoting.ObjectHandle? CreateInstanceFrom(string assemblyFile, string typeName);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom(string assemblyFile, string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
member this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
member this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
abstract member CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String) As ObjectHandle
Parameter
- assemblyFile
- String
Der Name, einschließlich des Pfads, einer Datei, die eine Assembly enthält, die den angeforderten Typ definiert. Die Assembly wird mit der LoadFrom(String) Methode geladen.
- typeName
- String
Der vollqualifizierte Name des angeforderten Typs, einschließlich des Namespaces, aber nicht der Assembly, wie von der FullName Eigenschaft zurückgegeben.
Gibt zurück
Ein Objekt, das ein Wrapper für die neue Instanz ist oder null nicht typeName gefunden wird. Der Rückgabewert muss entwrappt werden, um auf das reale Objekt zuzugreifen.
Implementiert
- Attribute
Ausnahmen
assemblyFile wurde nicht gefunden.
typeName wurde nicht gefunden in assemblyFile.
Der Vorgang wird in einer nicht geladenen Anwendungsdomäne versucht.
Es wurde kein parameterloser öffentlicher Konstruktor gefunden.
Der Aufrufer verfügt nicht über ausreichende Berechtigungen, um diesen Konstruktor aufzurufen.
assemblyFile ist keine gültige Assembly für die aktuell geladene Laufzeit.
Eine Assembly oder ein Modul wurde zweimal mit zwei verschiedenen Nachweisen geladen.
Diese Instanz ist null.
Beispiele
Das folgende Beispiel zeigt, wie Sie die CreateInstanceFrom(String, String) Methodenüberladung verwenden, um eine Instanz eines Objekts in einer Zielanwendungsdomäne zu erstellen und dessen Methoden aufzurufen.
Im Beispiel wird die MarshalableExample Klasse definiert, die über Anwendungsdomänengrenzen hinweg gemarstet werden kann. Das Beispiel erstellt einen Pfad zur derzeit ausgeführten Assembly, erstellt eine Zielanwendungsdomäne und verwendet die CreateInstanceFrom(String, String) Methodenüberladung, um die Beispielassembly in die Zielanwendungsdomäne zu laden und eine Instanz von MarshalableExample.
Hinweis
Der Pfad ist in diesem Beispiel absolut, aber ein relativer Pfad würde auch funktionieren, da die Assembly.LoadFrom Methode zum Laden der Assembly verwendet wird.
Nach dem Aufheben des Objekthandles veranschaulicht das Beispiel drei Methoden zum Verwenden eines Objekts in einer Zielanwendungsdomäne:
Aufrufen einer Methode mit später Bindung mithilfe von Spiegelung. Dies erfordert Typinformationen, wodurch die Assembly in die Anwendungsdomäne des Aufrufers geladen wird. (In diesem Beispiel ist es bereits geladen.)
Umwandeln des Objekts in eine Schnittstelle, die sowohl dem Aufrufer als auch dem Angerufenen bekannt ist. Wenn die Schnittstelle in der aufrufenden Assembly oder in einer dritten Assembly definiert ist, auf die sowohl vom Aufrufer als auch vom Angerufenen verwiesen wird, wird die aufgerufene Assembly nicht in die Anwendungsdomäne des Aufrufers geladen.
Direktes Verwenden des Objekts, wenn der Typ dem Aufrufer bekannt ist. Die Assembly muss in die Anwendungsdomäne des Aufrufers geladen werden.
Eine weitere Möglichkeit, um das Laden der aufgerufenen Assembly in die Anwendungsdomäne des Aufrufers zu vermeiden, besteht darin, dass der Aufrufer von der MarshalByRefObject Klasse abgeleitet wird und eine Methode definiert, die in der Zielanwendungsdomäne ausgeführt werden kann. Diese Methode kann Spiegelung verwenden, um eine Zielassembly zu untersuchen, da die Zielassembly bereits in die Zielanwendungsdomäne geladen wird. Sehen Sie sich das Beispiel für die DynamicDirectory Eigenschaft an.
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'!
Hinweise
Der parameterlose Konstruktor wird typeName aufgerufen.
Weitere Informationen finden Sie in der Activator.CreateInstanceFrom Methode.
Wenn die CreateInstanceFrom Methode verwendet wird, um eine Instanz in einer Zielanwendungsdomäne zu erstellen, außer der Anwendungsdomäne, aus der der Aufruf erfolgt, wird die Assembly in der Zielanwendungsdomäne geladen. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne aufgehoben wird, kann die Verwendung der nicht zugewiesenen Instanz auf bestimmte Weise dazu führen, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird. Nachdem die Instanz beispielsweise entwrappt wurde, können die Typinformationen angefordert werden, um die Methoden spät gebunden aufzurufen. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.
Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde oder sich der Ladepfad der aufrufenden Anwendungsdomäne von der der Zielanwendungsdomäne unterscheidet, können Ausnahmen auftreten MissingMethodException .
Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp sendet, kann ausgelöst werden, wenn versucht wird, InvalidCastException die Instanz zu umwandeln.