AppDomain.CreateInstanceFrom Methode

Definition

Erstellt eine neue Instanz eines angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of a specified type defined in the specified assembly file.

Überlädt

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String)

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

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

Warnung

Diese API ist jetzt veraltet.

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

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::Security::Policy::Evidence ^ securityAttributes);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[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 https://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);
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle

Parameter

assemblyFile
String

Der Name einschließlich des Pfads einer Datei, die eine Assembly enthält, in der der angeforderte Typ definiert ist.The name, including the path, of a file that contains an assembly that defines the requested type. Die Assembly wird mit der LoadFrom(String)-Methode geladen.The assembly is loaded using the LoadFrom(String) method.

typeName
String

Der vollqualifizierte Name des angeforderten Typs einschließlich des Namespace, jedoch ohne die Assembly, wie er von der FullName -Eigenschaft zurückgegeben wird.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean

Ein boolescher Wert, der angibt, ob bei der Suche die Groß-/Kleinschreibung beachtet werden soll.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags

Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName-Konstruktor beeinflussen.A combination of zero or more bit flags that affect the search for the typeName constructor. Wenn bindingAttr 0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder

Ein Objekt, das die Bindung, die Umwandlung von Argumenttypen, das Aufrufen von Membern und das Abrufen von MemberInfo-Objekten über Reflektion ermöglicht.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Wenn binder den Wert null aufweist, wird der Standardbinder verwendet.If binder is null, the default binder is used.

args
Object[]

Die an den Konstruktor zu übergebenden Argumente.The arguments to pass to the constructor. Dieses Array von Argumenten muss hinsichtlich Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmen.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Wenn der parameterlose Konstruktor bevorzugt wird, muss args ein leeres Array oder NULL sein.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo

Kulturabhängige Informationen, die die Umwandlung von args in die für den typeName-Konstruktor deklarierten formalen Typen bestimmen.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Wenn culture den Wert null hat, wird die CultureInfo des aktuellen Threads verwendet.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können.An array of one or more attributes that can participate in activation. Üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Der Parameter ist vom Client aktivierten Objekten zugeordnet.This parameter is related to client-activated objects. Die Clientaktivierung ist eine veraltete Technologie, die zum Zweck der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten, jedoch nicht für die Neuentwicklung empfohlen wird.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.Distributed applications should instead use Windows Communication Foundation.

securityAttributes
Evidence

Informationen, die zum Autorisieren der Erstellung von typeName verwendet werden.Information used to authorize creation of typeName.

Gibt zurück

Ein Objekt, das ein Wrapper für die neue Instanz ist, oder null, wenn typeName nicht gefunden wurde.An object that is a wrapper for the new instance, or null if typeName is not found. Der Rückgabewert muss für den Zugriff auf das eigentliche Objekt entwrappt werden.The return value needs to be unwrapped to access the real object.

Implementiert

Attribute

Ausnahmen

assemblyFile ist null.assemblyFile is null.

- oder --or- typeName ist null.typeName is null.

Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObject erbt.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

- oder --or- securityAttributes ist nicht null.securityAttributes is not null. Wenn die Legacy-CAS-Richtlinie nicht aktiviert ist, sollte securityAttributes den Wert null aufweisen.When legacy CAS policy is not enabled, securityAttributes should be null.

Der Vorgang wird für eine entladene Anwendungsdomäne ausgeführt.The operation is attempted on an unloaded application domain.

assemblyFile wurde nicht gefunden.assemblyFile was not found.

typeName wurde in assemblyFile nicht gefunden.typeName was not found in assemblyFile.

Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.No matching public constructor was found.

Der Aufrufer hat keine ausreichende Berechtigung zum Aufrufen dieses Konstruktors.The caller does not have sufficient permission to call this constructor.

assemblyFile ist keine gültige Assembly.assemblyFile is not a valid assembly.

- oder --or- Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und assemblyFile wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.An assembly or module was loaded twice with two different evidences.

Diese Instanz ist null.This instance is null.

Hinweise

Weitere Informationen zu dieser Methode finden Sie in der Activator.CreateInstanceFrom-Methode.For more information about this method, see the Activator.CreateInstanceFrom method.

Wenn die CreateInstanceFrom-Methode verwendet wird, um eine Instanz in einer Ziel Anwendungsdomäne zu erstellen, die nicht die Anwendungsdomäne ist, aus der der-Befehl stammt, wird die Assembly in die Ziel Anwendungsdomäne geladen.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne entpackt ist, kann die Verwendung der nicht umschließenden Instanz auf bestimmte Weise bewirken, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Wenn z. b. die-Instanz entpackt ist, werden ihre Typinformationen möglicherweise angefordert, um die Methoden spät gebunden aufzurufen.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde, oder wenn sich der Ladepfad der aufrufenden Anwendungsdomäne von der Ziel Anwendungsdomäne unterscheidet, können Ausnahmen wie MissingMethodException auftreten.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp vornimmt, können InvalidCastException ausgelöst werden, wenn versucht wird, die Instanz zu konvertieren.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Sicherheit

FileIOPermissionAccess
die Möglichkeit, die Datei zu lesen, die das Assemblymanifest enthält.for the ability to read the file containing the assembly manifest. Zugehörige Enumeration: ReadAssociated enumeration: Read

WebPermission
die Möglichkeit, auf den Speicherort der Assembly zuzugreifen, wenn die Assembly nicht lokal ist.for the ability to access the location of the assembly if the assembly is not local.

SecurityPermission
zum Bereitstellen von beweisen.to provide evidence. Zugeordnete Enumeration: ControlEvidenceAssociated enumeration: ControlEvidence.

Siehe auch

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

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

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);
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);
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle

Parameter

assemblyFile
String

Der Name einschließlich des Pfads einer Datei, die eine Assembly enthält, in der der angeforderte Typ definiert ist.The name, including the path, of a file that contains an assembly that defines the requested type. Die Assembly wird mit der LoadFrom(String)-Methode geladen.The assembly is loaded using the LoadFrom(String) method.

typeName
String

Der vollqualifizierte Name des angeforderten Typs einschließlich des Namespace, jedoch ohne die Assembly, wie er von der FullName -Eigenschaft zurückgegeben wird.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean

Ein boolescher Wert, der angibt, ob bei der Suche die Groß-/Kleinschreibung beachtet werden soll.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags

Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName-Konstruktor beeinflussen.A combination of zero or more bit flags that affect the search for the typeName constructor. Wenn bindingAttr 0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder

Ein Objekt, das die Bindung, die Umwandlung von Argumenttypen, das Aufrufen von Membern und das Abrufen von MemberInfo-Objekten über Reflektion ermöglicht.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Wenn binder den Wert null aufweist, wird der Standardbinder verwendet.If binder is null, the default binder is used.

args
Object[]

Die an den Konstruktor zu übergebenden Argumente.The arguments to pass to the constructor. Dieses Array von Argumenten muss hinsichtlich Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmen.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Wenn der parameterlose Konstruktor bevorzugt wird, muss args ein leeres Array oder NULL sein.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo

Kulturabhängige Informationen, die die Umwandlung von args in die für den typeName-Konstruktor deklarierten formalen Typen bestimmen.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Wenn culture den Wert null hat, wird die CultureInfo des aktuellen Threads verwendet.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können.An array of one or more attributes that can participate in activation. Üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Der Parameter ist vom Client aktivierten Objekten zugeordnet.This parameter is related to client-activated objects. Die Clientaktivierung ist eine veraltete Technologie, die zum Zweck der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten, jedoch nicht für die Neuentwicklung empfohlen wird.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.Distributed applications should instead use Windows Communication Foundation.

Gibt zurück

Ein Objekt, das ein Wrapper für die neue Instanz ist, oder null, wenn typeName nicht gefunden wurde.An object that is a wrapper for the new instance, or null if typeName is not found. Der Rückgabewert muss für den Zugriff auf das eigentliche Objekt entwrappt werden.The return value needs to be unwrapped to access the real object.

Ausnahmen

assemblyFile ist null.assemblyFile is null.

- oder --or- typeName ist null.typeName is null.

Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObjecterbt.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

Der Vorgang wird für eine entladene Anwendungsdomäne ausgeführt.The operation is attempted on an unloaded application domain.

assemblyFile wurde nicht gefunden.assemblyFile was not found.

typeName wurde in assemblyFile nicht gefunden.typeName was not found in assemblyFile.

Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.No matching public constructor was found.

Der Aufrufer hat keine ausreichende Berechtigung zum Aufrufen dieses Konstruktors.The caller does not have sufficient permission to call this constructor.

assemblyFile ist keine gültige Assembly.assemblyFile is not a valid assembly.

- oder --or- assemblyFile wurde mit einer Version der Common Language Runtime kompiliert, die höher ist als die Version, die derzeit geladen ist.assemblyFile was compiled with a later version of the common language runtime than the version that is currently loaded.

Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.An assembly or module was loaded twice with two different evidences.

Diese Instanz ist null.This instance is null.

Hinweise

Weitere Informationen finden Sie unter der Methode Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

Wenn die CreateInstanceFrom-Methode verwendet wird, um eine Instanz in einer Ziel Anwendungsdomäne zu erstellen, die nicht die Anwendungsdomäne ist, aus der der-Befehl stammt, wird die Assembly in die Ziel Anwendungsdomäne geladen.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne entpackt ist, kann die Verwendung der nicht umschließenden Instanz auf bestimmte Weise bewirken, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Wenn z. b. die-Instanz entpackt ist, werden ihre Typinformationen möglicherweise angefordert, um die Methoden spät gebunden aufzurufen.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde, oder wenn sich der Ladepfad der aufrufenden Anwendungsdomäne von der Ziel Anwendungsdomäne unterscheidet, können Ausnahmen wie MissingMethodException auftreten.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp vornimmt, können InvalidCastException ausgelöst werden, wenn versucht wird, die Instanz zu konvertieren.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Sicherheit

FileIOPermissionAccess
die Möglichkeit, die Datei zu lesen, die das Assemblymanifest enthält.for the ability to read the file containing the assembly manifest. Zugehörige Enumeration: ReadAssociated enumeration: Read

WebPermission
die Möglichkeit, auf den Speicherort der Assembly zuzugreifen, wenn die Assembly nicht lokal ist.for the ability to access the location of the assembly if the assembly is not local.

Siehe auch

CreateInstanceFrom(String, String, Object[])

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, object[] activationAttributes);
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, in der der angeforderte Typ definiert ist.The name, including the path, of a file that contains an assembly that defines the requested type. Die Assembly wird mit der LoadFrom(String)-Methode geladen.The assembly is loaded using the LoadFrom(String) method.

typeName
String

Der vollqualifizierte Name des angeforderten Typs einschließlich des Namespace, jedoch ohne die Assembly, wie er von der FullName-Eigenschaft zurückgegeben wird.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

activationAttributes
Object[]

Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können.An array of one or more attributes that can participate in activation. Üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Der Parameter ist vom Client aktivierten Objekten zugeordnet. Die Clientaktivierung ist eine veraltete Technologie, die zum Zweck der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten, jedoch nicht für die Neuentwicklung empfohlen wird.This parameter is related to client-activated objects.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.Distributed applications should instead use Windows Communication Foundation.

Gibt zurück

Ein Objekt, das ein Wrapper für die neue Instanz ist, oder null, wenn typeName nicht gefunden wurde.An object that is a wrapper for the new instance, or null if typeName is not found. Der Rückgabewert muss für den Zugriff auf das eigentliche Objekt entwrappt werden.The return value needs to be unwrapped to access the real object.

Implementiert

Ausnahmen

assemblyFile ist null.assemblyFile is null.

assemblyFile wurde nicht gefunden.assemblyFile was not found.

typeName wurde in assemblyFile nicht gefunden.typeName was not found in assemblyFile.

Der Aufrufer hat keine ausreichende Berechtigung zum Aufrufen dieses Konstruktors.The caller does not have sufficient permission to call this constructor.

Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.No matching public constructor was found.

Der Aufrufer kann keine Aktivierungsattribute für ein Objekt bereitstellen, das nicht von MarshalByRefObject erbt.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

Der Vorgang wird für eine entladene Anwendungsdomäne ausgeführt.The operation is attempted on an unloaded application domain.

assemblyFile ist keine gültige Assembly.assemblyFile is not a valid assembly.

- oder --or- Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und assemblyFile wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.An assembly or module was loaded twice with two different evidences.

Diese Instanz ist null.This instance is null.

Hinweise

Der Parameter lose Konstruktor für typeName wird aufgerufen.The parameterless constructor for typeName is invoked.

Weitere Informationen zu dieser Methode finden Sie in der Activator.CreateInstanceFrom-Methode.For more information about this method, see the Activator.CreateInstanceFrom method.

Wenn die CreateInstanceFrom-Methode verwendet wird, um eine Instanz in einer Ziel Anwendungsdomäne zu erstellen, die nicht die Anwendungsdomäne ist, aus der der-Befehl stammt, wird die Assembly in die Ziel Anwendungsdomäne geladen.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne entpackt ist, kann die Verwendung der nicht umschließenden Instanz auf bestimmte Weise bewirken, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Wenn z. b. die-Instanz entpackt ist, werden ihre Typinformationen möglicherweise angefordert, um die Methoden spät gebunden aufzurufen.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde, oder wenn sich der Ladepfad der aufrufenden Anwendungsdomäne von der Ziel Anwendungsdomäne unterscheidet, können Ausnahmen wie MissingMethodException auftreten.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp vornimmt, können InvalidCastException ausgelöst werden, wenn versucht wird, die Instanz zu konvertieren.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Sicherheit

FileIOPermissionAccess
die Möglichkeit, die Datei zu lesen, die das Assemblymanifest enthält.for the ability to read the file containing the assembly manifest. Zugehörige Enumeration: ReadAssociated enumeration: Read

WebPermission
die Möglichkeit, auf den Speicherort der Assembly zuzugreifen, wenn die Assembly nicht lokal ist.for the ability to access the location of the assembly if the assembly is not local.

Siehe auch

CreateInstanceFrom(String, String)

Erstellt eine neue Instanz des angegebenen Typs, der in der angegebenen Assemblydatei definiert ist.Creates a new instance of the specified type defined in the specified assembly file.

public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName);
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, in der der angeforderte Typ definiert ist.The name, including the path, of a file that contains an assembly that defines the requested type. Die Assembly wird mit der LoadFrom(String)-Methode geladen.The assembly is loaded using the LoadFrom(String) method.

typeName
String

Der vollqualifizierte Name des angeforderten Typs einschließlich des Namespace, jedoch ohne die Assembly, wie er von der FullName-Eigenschaft zurückgegeben wird.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

Gibt zurück

Ein Objekt, das ein Wrapper für die neue Instanz ist, oder null, wenn typeName nicht gefunden wurde.An object that is a wrapper for the new instance, or null if typeName is not found. Der Rückgabewert muss für den Zugriff auf das eigentliche Objekt entwrappt werden.The return value needs to be unwrapped to access the real object.

Implementiert

Ausnahmen

assemblyFile ist null.assemblyFile is null.

- oder --or- typeName ist null.typeName is null.

assemblyFile wurde nicht gefunden.assemblyFile was not found.

typeName wurde in assemblyFile nicht gefunden.typeName was not found in assemblyFile.

Der Vorgang wird für eine entladene Anwendungsdomäne ausgeführt.The operation is attempted on an unloaded application domain.

Es wurde kein parameterloser öffentlicher Konstruktor gefunden.No parameterless public constructor was found.

Der Aufrufer hat keine ausreichende Berechtigung zum Aufrufen dieses Konstruktors.The caller does not have sufficient permission to call this constructor.

assemblyFile ist keine gültige Assembly.assemblyFile is not a valid assembly.

- oder --or- Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und assemblyFile wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.An assembly or module was loaded twice with two different evidences.

Diese Instanz ist null.This instance is null.

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie mit der CreateInstanceFrom(String, String)-Methoden Überladung eine Instanz eines Objekts in einer Ziel Anwendungsdomäne erstellen und deren Methoden aufrufen.The following example shows how to use the CreateInstanceFrom(String, String) method overload to create an instance of an object in a target application domain and call its methods.

Im Beispiel wird die MarshalableExample-Klasse definiert, die über Anwendungs Domänen Grenzen hinweg gemarshallt werden kann.The example defines the MarshalableExample class, which can be marshaled across application domain boundaries. Im Beispiel wird ein Pfad zur aktuell ausgeführten Assembly erstellt, eine Ziel Anwendungsdomäne erstellt und die CreateInstanceFrom(String, String)-Methoden Überladung verwendet, um die Beispielassembly in die Ziel Anwendungsdomäne zu laden und eine Instanz von MarshalableExamplezu erstellen.The example builds a path to the currently executing assembly, creates a target application domain, and uses the CreateInstanceFrom(String, String) method overload to load the example assembly into the target application domain and create an instance of MarshalableExample.

Hinweis

Der Pfad ist in diesem Beispiel absolut, aber ein relativer Pfad würde auch funktionieren, da die Assembly.LoadFrom-Methode verwendet wird, um die Assembly zu laden.The path is absolute in this example, but a relative path would also work because the Assembly.LoadFrom method is used to load the assembly.

Nachdem das Objekt Handle entpackt wurde, veranschaulicht das Beispiel drei Möglichkeiten, ein Objekt in einer Ziel Anwendungsdomäne zu verwenden:After unwrapping the object handle, the example demonstrates three ways to use an object in a target application domain:

  • Aufrufen einer Methode mit späterer Bindung mithilfe von Reflektion.Invoking a method with late binding, using reflection. Hierfür sind Typinformationen erforderlich, die bewirken, dass die Assembly in die Anwendungsdomäne des Aufrufers geladen wird.This requires type information, which causes the assembly to be loaded into the application domain of the caller. (In diesem Beispiel ist es bereits geladen.)(In this example, it is already loaded.)

  • Umwandeln des Objekts in eine Schnittstelle, die dem Aufrufer und dem aufgerufenen bekannt ist.Casting the object to an interface known to both the caller and the callee. Wenn die Schnittstelle in der aufrufenden Assembly oder in einer dritten Assembly definiert ist, auf die sowohl vom Aufrufer als auch vom aufgerufenen verwiesen wird, wird die aufgerufene Assembly nicht in die Anwendungsdomäne des Aufrufers geladen.If the interface is defined in the calling assembly or in a third assembly referenced by both the caller and the callee, the called assembly is not loaded into the application domain of the caller.

  • Verwenden des-Objekts direkt, wenn der Typ dem Aufrufer bekannt ist.Using the object directly when its type is known to the caller. Die Assembly muss in die Anwendungsdomäne des Aufrufers geladen werden.The assembly must be loaded into the application domain of the caller.

Eine andere 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 und eine Methode definiert, die in der Ziel Anwendungsdomäne ausgeführt werden kann.Another way to avoid loading the called assembly into the application domain of the caller is for the caller to derive from the MarshalByRefObject class and to define a method that can be run in the target application domain. Diese Methode kann Reflektion verwenden, um eine Zielassembly zu überprüfen, da die Zielassembly bereits in die Ziel Anwendungsdomäne geladen wurde.That method can use reflection to examine a target assembly, because the target assembly is already loaded into the target application domain. Weitere Informationen finden Sie im Beispiel für die DynamicDirectory-Eigenschaft.See the example for the DynamicDirectory property.

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'!
 */
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 Parameter lose Konstruktor für typeName wird aufgerufen.The parameterless constructor for typeName is invoked.

Weitere Informationen finden Sie unter der Methode Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

Wenn die CreateInstanceFrom-Methode verwendet wird, um eine Instanz in einer Ziel Anwendungsdomäne zu erstellen, die nicht die Anwendungsdomäne ist, aus der der-Befehl stammt, wird die Assembly in die Ziel Anwendungsdomäne geladen.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Wenn die Instanz jedoch in der aufrufenden Anwendungsdomäne entpackt ist, kann die Verwendung der nicht umschließenden Instanz auf bestimmte Weise bewirken, dass die Assembly in die aufrufende Anwendungsdomäne geladen wird.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Wenn z. b. die-Instanz entpackt ist, werden ihre Typinformationen möglicherweise angefordert, um die Methoden spät gebunden aufzurufen.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Wenn die Assembly in die aufrufende Anwendungsdomäne geladen wird, können Ausnahmen auftreten.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Wenn eine andere Version derselben Assembly zuvor in die aufrufende Anwendungsdomäne geladen wurde, oder wenn sich der Ladepfad der aufrufenden Anwendungsdomäne von der Ziel Anwendungsdomäne unterscheidet, können Ausnahmen wie MissingMethodException auftreten.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Wenn die aufrufende Anwendungsdomäne früh gebundene Aufrufe an den Instanztyp vornimmt, können InvalidCastException ausgelöst werden, wenn versucht wird, die Instanz zu konvertieren.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Sicherheit

FileIOPermissionAccess
die Möglichkeit, die Datei zu lesen, die das Assemblymanifest enthält.for the ability to read the file containing the assembly manifest. Zugehörige Enumeration: ReadAssociated enumeration: Read

WebPermission
die Möglichkeit, auf den Speicherort der Assembly zuzugreifen, wenn die Assembly nicht lokal ist.for the ability to access the location of the assembly if the assembly is not local.

Siehe auch

Gilt für: