Activator.CreateInstance 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 mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.
Überlädt
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Veraltet.
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs. |
CreateInstance(Type, Object[], Object[]) |
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs. |
CreateInstance(String, String, Object[]) |
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Veraltet.
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt. |
CreateInstance(Type, Object[]) |
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs. |
CreateInstance(Type, Boolean) |
Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs. |
CreateInstance(String, String) |
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors. |
CreateInstance(ActivationContext, String[]) |
Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt und mit den angegebenen benutzerdefinierten Aktivierungsdaten aktiviert wird. |
CreateInstance(Type) |
Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs. |
CreateInstance(ActivationContext) |
Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt wurde. |
CreateInstance(AppDomain, String, String) |
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors. |
CreateInstance<T>() |
Erstellt mit dem parameterlosen Konstruktor eine Instanz des Typs, der vom angegebenen generischen Typparameter festgelegt wurde. |
CreateInstance(AppDomain, 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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, 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 static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, 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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, 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);
static member CreateInstance : AppDomain * 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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName 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
- domain
- AppDomain
Die Domäne, in der der Typ typeName
erstellt wird.
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
- ignoreCase
- Boolean
true
, wenn bei der Suche nach typeName
die Groß-/Kleinschreibung nicht beachtet werden soll; false
, wenn bei der Suche die Groß-/Kleinschreibung beachtet werden soll.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des typeName
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den typeName
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. In der Regel ein Array, das ein einzelnes UrlAttribute-Objekt enthält. UrlAttribute gibt die URL an, die zum Aktivieren eines Remoteobjekts erforderlich ist.
- securityAttributes
- Evidence
Informationen, die bei Entscheidungen bezüglich Sicherheitsrichtlinien und beim Gewähren von Codeberechtigungen herangezogen werden.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
- Attribute
Ausnahmen
domain
oder typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Verwenden Sie CreateInstance , wenn ein Host Code in einer Anwendungsdomäne ausführen muss, die eingeschränkte Sicherheitsberechtigungen aufweist.
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Gilt für
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der den angegebenen Parametern am besten entspricht.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, 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.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName 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
- domain
- AppDomain
Die Domäne, in der der Typ typeName
erstellt wird.
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
- ignoreCase
- Boolean
true
, wenn bei der Suche nach typeName
die Groß-/Kleinschreibung nicht beachtet werden soll; false
, wenn bei der Suche die Groß-/Kleinschreibung beachtet werden soll.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des typeName
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den typeName
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
- Attribute
Ausnahmen
domain
oder typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Hinweise
Verwenden Sie CreateInstance , wenn ein Host Code in einer Anwendungsdomäne ausführen muss, die eingeschränkte Sicherheitsberechtigungen aufweist.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Gilt für
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, 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 static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName 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
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
- ignoreCase
- Boolean
true
, wenn bei der Suche nach typeName
die Groß-/Kleinschreibung nicht beachtet werden soll; false
, wenn bei der Suche die Groß-/Kleinschreibung beachtet werden soll.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des typeName
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den typeName
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
Ausnahmen
typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Hinweise
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um nichtublice Typen und Member zu erstellen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der Assembly, die die nichtpublicen Typen und Member enthält, auf die Erteilungssatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
public static object? CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static object CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
static member CreateInstance : Type * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
Public Shared Function CreateInstance (type As Type, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem type
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des type
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den type
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender Konstruktor gefunden.
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Hinweise
Der aufgerufene Konstruktor muss die spezifischste Übereinstimmung mit der angegebenen Argumentliste unter den Einschränkungen der angegebenen Ordner- und Bindungsattribute bereitstellen.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen und Member zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der nichtpublicen Typen und Member auf den Grantsatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture);
public static object? CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture);
public static object CreateInstance (Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture);
static member CreateInstance : Type * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj
Public Shared Function CreateInstance (type As Type, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem type
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des type
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den type
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender Konstruktor gefunden.
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Hinweise
Der aufgerufene Konstruktor muss die spezifischste Übereinstimmung mit der angegebenen Argumentliste unter den Einschränkungen der angegebenen Ordner- und Bindungsattribute bereitstellen.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen und Member zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der Assembly, die die nichtpublicen Typen und Member enthält, auf die Erteilungssatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(Type, Object[], Object[])
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type, cli::array <System::Object ^> ^ args, cli::array <System::Object ^> ^ activationAttributes);
public static object? CreateInstance (Type type, object?[]? args, object?[]? activationAttributes);
public static object CreateInstance (Type type, object[] args, object[] activationAttributes);
static member CreateInstance : Type * obj[] * obj[] -> obj
Public Shared Function CreateInstance (type As Type, args As Object(), activationAttributes As Object()) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Hinweise
Der aufgerufene Konstruktor muss barrierefrei sein und muss die spezifischste Übereinstimmung mit der angegebenen Argumentliste bereitstellen.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der Assembly, die die nichtpublic-Typen enthält, auf den Erteilungssatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(String, String, Object[])
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, object[] activationAttributes);
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, activationAttributes As Object()) As ObjectHandle
Parameter
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
Ausnahmen
typeName
ist null
.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
activationAttributes
ist kein UrlAttribute-
Array.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Der aufgerufene Konstruktor löst eine Ausnahme aus.
Oder
Bei dem Versuch einer Remoteaktivierung in einem in activationAttributes
angegebenen Ziel ist ein Fehler aufgetreten.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um nichtublice Typen zu erstellen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der nichtpublic-Typen auf den Grantsatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des Konstruktors, der mit den angegebenen Parametern am besten übereinstimmt.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, 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 ^ securityInfo);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityInfo);
[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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityInfo);
static member CreateInstance : 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 CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityInfo As Evidence) As ObjectHandle
Parameter
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
- ignoreCase
- Boolean
true
, wenn bei der Suche nach typeName
die Groß-/Kleinschreibung nicht beachtet werden soll; false
, wenn bei der Suche die Groß-/Kleinschreibung beachtet werden soll.
- bindingAttr
- BindingFlags
Eine Kombination von 0 oder mehr Bitflags, die die Suche nach dem typeName
-Konstruktor beeinflussen. Wenn bindingAttr
0 ist, wird eine Suche nach öffentlichen Konstruktoren mit Beachtung der Groß-/Kleinschreibung durchgeführt.
- binder
- Binder
Ein Objekt, das bindingAttr
und args
für die Suche und Bestimmung des typeName
-Konstruktors verwendet. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
- culture
- CultureInfo
Kulturabhängige Informationen, die die Umwandlung von args
in die für den typeName
-Konstruktor deklarierten formalen Typen bestimmen. Wenn culture
den Wert null
hat, wird die CultureInfo des aktuellen Threads verwendet.
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Dies ist üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.
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. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
- securityInfo
- Evidence
Informationen, die bei Entscheidungen bezüglich Sicherheitsrichtlinien und beim Gewähren von Codeberechtigungen herangezogen werden.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
- Attribute
Ausnahmen
typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
activationAttributes
ist kein leeres Array, und der erstellte Typ wird nicht von MarshalByRefObject abgeleitet.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um nichtublice Typen und Member zu erstellen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der Assembly, die die nichtpublicen Typen und Member enthält, auf die Erteilungssatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(Type, Object[])
Erstellt mithilfe des Konstruktors, der den angegebenen Parametern am ehesten entspricht, eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type, ... cli::array <System::Object ^> ^ args);
public:
static System::Object ^ CreateInstance(Type ^ type, cli::array <System::Object ^> ^ args);
public static object CreateInstance (Type type, params object[] args);
public static object? CreateInstance (Type type, params object?[]? args);
public static object CreateInstance (Type type, object[] args);
static member CreateInstance : Type * obj[] -> obj
Public Shared Function CreateInstance (type As Type, ParamArray args As Object()) As Object
Public Shared Function CreateInstance (type As Type, args As Object()) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
- args
- Object[]
Ein Array von Argumenten, das im Hinblick auf Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmt. Wenn args
ein leeres Array oder null
ist, wird der (parameterlose) Konstruktor aufgerufen, der keine Parameter akzeptiert.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
- oder -
Der am besten übereinstimmende Konstruktor args
verfügt über varargs
-Argumente.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Hinweis: In .NET für Windows Store Apps oder die portable Klassenbibliothek erfassen Sie stattdessen die Basisklassen-Ausnahme, MemberAccessExceptionsondern.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
Hinweis: In .NET für Windows Store Apps oder die portable Klassenbibliothek erfassen Sie stattdessen die Basisklassen-Ausnahme, MissingMemberExceptionsondern.
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Beispiele
Im folgenden Beispiel wird die CreateInstance(Type, Object[]) Methode aufgerufen, um ein String Objekt zu erstellen. Er ruft den String.String(Char[], Int32, Int32) Konstruktor auf, eine Zeichenfolge zu instanziieren, die zehn Elemente aus einem Zeichenarray ab der 14. Position enthält.
using System;
public class Example
{
public static void Main()
{
// Initialize array of characters from a to z.
char[] chars = new char[26];
for (int ctr = 0; ctr < 26; ctr++)
chars[ctr] = (char) (ctr + 0x0061);
object obj = Activator.CreateInstance(typeof(string),
new object[] { chars, 13, 10 } );
Console.WriteLine(obj);
}
}
// The example displays the following output:
// nopqrstuvw
open System
// Initialize array of characters from a to z.
let chars = [| 'a' .. 'z' |]
let obj = Activator.CreateInstance(typeof<string>, chars[13..22])
printfn $"{obj}"
// The example displays the following output:
// nopqrstuvw
Module Example
Public Sub Main()
' Initialize array of characters from a to z.
Dim chars(25) As Char
For ctr As Short = 0 To 25
chars(ctr) = ChrW(ctr + &h0061)
Next
Dim obj As Object = Activator.CreateInstance(GetType(String),
{ chars, 13, 10 })
Console.WriteLine(obj)
End Sub
End Module
' The example displays the following output:
' nopqrstuvw
Im folgenden Beispiel wird ein gestricheltes Array erstellt, dessen Elemente an einen String Konstruktor übergeben werden sollen. Im Beispiel wird dann jedes Array an die CreateInstance(Type, Object[]) Methode übergeben, um den entsprechenden Zeichenfolgenkonstruktor aufzurufen.
using System;
public class Example
{
public static void Main()
{
char[] characters = { 'a', 'b', 'c', 'd', 'e', 'f' };
object[][] arguments = new object[3][] { new object[] { characters },
new object[] { characters, 1, 4 },
new object[] { characters[1], 20 } };
for (int ctr = 0; ctr <= arguments.GetUpperBound(0); ctr++) {
object[] args = arguments[ctr];
object result = Activator.CreateInstance(typeof(string), args);
Console.WriteLine("{0}: {1}", result.GetType().Name, result);
}
}
}
// The example displays the following output:
// String: abcdef
// String: bcde
// String: bbbbbbbbbbbbbbbbbbbb
open System
let chars = [| 'a' .. 'f' |]
let arguments =
[| chars
chars[1..4]
Array.create 20 chars[1] |]
for args in arguments do
let result =
Activator.CreateInstance(typeof<string>, args)
printfn $"{result.GetType().Name}: {result}"
// The example displays the following output:
// String: abcdef
// String: bcde
// String: bbbbbbbbbbbbbbbbbbbb
Module Example
Public Sub Main()
Dim characters() As Char = { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c }
Dim arguments()() As Object = new Object(2)() { New Object() { characters },
New Object() { characters, 1, 4 },
New Object() { characters(1), 20 } }
For ctr As Integer = 0 To arguments.GetUpperBound(0)
Dim args() As Object = arguments(ctr)
Dim result As Object = Activator.CreateInstance(GetType(String), args)
Console.WriteLine("{0}: {1}", result.GetType().Name, result)
Next
End Sub
End Module
' The example displays the following output:
' String: abcdef
' String: bcde
' String: bbbbbbbbbbbbbbbbbbbb
Hinweise
Der aufgerufene Konstruktor muss barrierefrei sein und muss die spezifischste Übereinstimmung mit der angegebenen Argumentliste bereitstellen.
Die Methode gibt für die Nullable<T> Instanzen ohne Wert zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag gewährt wurde und wenn der Grantsatz der Assembly, die die nichtublicen Typen enthält, auf den Grantsatz des Anrufers oder auf eine Teilmenge davon beschränkt istReflectionPermission. (Siehe Sicherheitsüberlegungen für Spiegelung.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher abzielen.
Gilt für
CreateInstance(Type, Boolean)
Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type, bool nonPublic);
public static object? CreateInstance (Type type, bool nonPublic);
public static object CreateInstance (Type type, bool nonPublic);
static member CreateInstance : Type * bool -> obj
Public Shared Function CreateInstance (type As Type, nonPublic As Boolean) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
- nonPublic
- Boolean
true
, wenn ein öffentlicher oder nicht öffentlicher parameterloser Konstruktor als Entsprechung möglich ist; false
, wenn nur ein öffentlicher parameterloser Konstruktor als Entsprechung möglich ist.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen und Elemente zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag gewährt wurde und wenn der Grantsatz der Assembly, die die nichtublicen Typen und Member enthält, auf den Grantsatz des Anrufers oder auf eine Teilmenge beschränkt istReflectionPermission. (Siehe Sicherheitsüberlegungen für Spiegelung.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher abzielen.
Gilt für
CreateInstance(String, String)
Erstellt eine Instanz des Typs mit dem angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName);
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle
Parameter
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
Ausnahmen
typeName
ist null
.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Sie können keine Instanz einer abstrakten Klasse erstellen, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Beispiele
Im folgenden Beispiel wird eine Klasse definiert, die in einer Assembly PersonInfo
benannt Person
ist. Beachten Sie, dass die Person
Klasse über zwei Konstruktoren verfügt, eine von denen parameterlos ist.
using System;
public class Person
{
private string _name;
public Person()
{ }
public Person(string name)
{
this._name = name;
}
public string Name
{ get { return this._name; }
set { this._name = value; } }
public override string ToString()
{
return this._name;
}
}
type Person(name) =
member val Name = name with get, set
override this.ToString() = this.Name
new () = Person Unchecked.defaultof<string>
Public Class Person
Private _name As String
Public Sub New()
End Sub
Public Sub New(name As String)
Me._name = name
End Sub
Public Property Name As String
Get
Return Me._name
End Get
Set
Me._name = value
End Set
End Property
Public Overrides Function ToString() As String
Return Me._name
End Function
End Class
Im folgenden Beispiel wird die Methode aufgerufen, um die CreateInstance(String, String) Person
Klasse zu instanziieren. Es erfordert einen Verweis auf PersonInfo.dll, das dem Projekt hinzugefügt werden soll. Da die CreateInstance(String, String) Methode den Person
Klassenparameterlosen Konstruktor aufruft, weist das Beispiel einen Wert seiner Name
Eigenschaft zu.
using System;
using System.Runtime.Remoting;
public class Example
{
public static void Main()
{
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
Person p = (Person) handle.Unwrap();
p.Name = "Samuel";
Console.WriteLine(p);
}
}
// The example displays the following output:
// Samuel
open System
let handle = Activator.CreateInstance("PersonInfo", "Person")
let p = handle.Unwrap() :?> Person
p.Name <- "Samuel"
printfn $"{p}"
// The example displays the following output:
// Samuel
Imports System.Runtime.Remoting
Module Example
Public Sub Main()
Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
Dim p As Person = CType(handle.Unwrap(), Person)
p.Name = "Samuel"
Console.WriteLine(p)
End Sub
End Module
' The example displays the following output:
' Samuel
CreateInstance Es wird jedoch häufig aufgerufen, einen Typ zu instanziieren, der die Computergrenzen überschreitet oder die zur Entwurfszeit nicht bekannt ist. In diesem Fall können Sie keinen Verweis auf die Assembly im Projekt einschließen und keine frühzeitig gebundenen Aufrufe an die Elemente des Typs vornehmen. Um diese Einschränkung zu umgehen, verwendet das folgende Beispiel die CreateInstance Methode zusammen mit der Spiegelung, um der Eigenschaft des Person
Objekts Name
einen Wert zuzuweisen und seinen Wert anzuzeigen.
using System;
using System.Reflection;
using System.Runtime.Remoting;
public class Example
{
public static void Main()
{
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
object p = handle.Unwrap();
Type t = p.GetType();
PropertyInfo prop = t.GetProperty("Name");
if (prop != null)
prop.SetValue(p, "Samuel");
MethodInfo method = t.GetMethod("ToString");
object retVal = method.Invoke(p, null);
if (retVal != null)
Console.WriteLine(retVal);
}
}
// The example displays the following output:
// Samuel
open System
let handle =
Activator.CreateInstance("PersonInfo", "Person")
let p = handle.Unwrap()
let t = p.GetType()
let prop = t.GetProperty "Name"
if not (isNull prop) then
prop.SetValue(p, "Samuel")
let method = t.GetMethod "ToString"
let retVal = method.Invoke(p, null)
if not (isNull retVal) then
printfn $"{retVal}"
// The example displays the following output:
// Samuel
Imports System.Reflection
Imports System.Runtime.Remoting
Module Example
Public Sub Main()
Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
Dim p As Object = handle.Unwrap()
Dim t As Type = p.GetType()
Dim prop As PropertyInfo = t.GetProperty("Name")
if Not prop Is Nothing Then
prop.SetValue(p, "Samuel")
End If
Dim method As MethodInfo = t.GetMethod("ToString")
Dim retVal As Object = method.Invoke(p, Nothing)
If Not retVal Is Nothing Then
Console.WriteLine(retVal)
End If
End Sub
End Module
' The example displays the following output:
' Samuel
Hinweise
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Verwenden Sie ObjectHandle.Unwrap zum Aufheben des Rückgabewerts.
assemblyName
kann eine der folgenden Aktionen sein:
Der einfache Name einer Assembly, ohne den Pfad oder die Dateierweiterung. Sie würden beispielsweise für eine Assembly angeben
TypeExtensions
, deren Pfad und Name .\bin\TypeExtensions.dll sind.Der vollständige Name einer signierten Assembly, die aus dem einfachen Namen, der Version, der Kultur und dem öffentlichen Schlüsseltoken besteht; Beispiel: "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".
Weitere Informationen dazu, wie die allgemeine Sprachlaufzeit Assemblys identifiziert und lädt, finden Sie unter How the Runtime Locates Assemblys. Informationen zur Verwendung der Anwendungskonfigurationsdatei zum Definieren von Assemblyspeicherorten finden Sie unter Angeben des Speicherorts einer Assembly. Wenn assemblyName
sie gefunden wird, wird sie im Standardkontext geladen.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um nichtublice Typen zu erstellen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt wurde und wenn der Grantsatz der Assembly, die die nichtublicen Typen enthält, auf den Grantsatz des Anrufers oder auf eine Teilmenge beschränkt istReflectionPermission. (Siehe Sicherheitsüberlegungen für Spiegelung.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher abzielen.
Gilt für
CreateInstance(ActivationContext, String[])
Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt und mit den angegebenen benutzerdefinierten Aktivierungsdaten aktiviert wird.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(ActivationContext ^ activationContext, cli::array <System::String ^> ^ activationCustomData);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (ActivationContext activationContext, string[] activationCustomData);
static member CreateInstance : ActivationContext * string[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (activationContext As ActivationContext, activationCustomData As String()) As ObjectHandle
Parameter
- activationContext
- ActivationContext
Ein Aktivierungskontextobjekt, das das zu erstellende Objekt angibt.
- activationCustomData
- String[]
Ein Array von Unicode-Zeichenfolgen mit benutzerdefinierten Aktivierungsdaten.
Gibt zurück
Ein Handle, das für den Zugriff auf das neu erstellte Objekt entwrappt werden muss.
Hinweise
Verwenden Sie die Methode, um den ObjectHandle.Unwrap Rückgabewert auszufangen.
Der Aktivierungskontext wird während der manifestbasierten Aktivierung verwendet, um die Domänenrichtlinie einzurichten und ein anwendungsbasiertes Sicherheitsmodell bereitzustellen. Die ActivationContext Klasse enthält ein ApplicationIdentity Objekt, das Zugriff auf das Anwendungsmanifest bereitstellt. Weitere Informationen finden Sie in den Ausführungen zur ApplicationSecurityManager-Klasse.
Siehe auch
Gilt für
CreateInstance(Type)
Erstellt mit dem parameterlosen Konstruktor dieses Typs eine Instanz des angegebenen Typs.
public:
static System::Object ^ CreateInstance(Type ^ type);
public static object CreateInstance (Type type);
public static object? CreateInstance (Type type);
static member CreateInstance : Type -> obj
Public Shared Function CreateInstance (type As Type) As Object
Parameter
- type
- Type
Der Typ des zu erstellenden Objekts.
Gibt zurück
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
type
ist null
.
type
ist keine RuntimeType
.
- oder -
type
ist ein offener generischer Typ (die ContainsGenericParameters-Eigenschaft gibt folglich true
zurück).
type
darf nicht TypeBuilder sein.
- oder - Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
- oder -
Die Assembly mit type
ist eine dynamische Assembly, die mit Save erstellt wurde.
Das Aufrufen des Konstruktors löst eine Ausnahme aus.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Hinweis: In .NET für Windows Store Apps oder die Portable Class Library fangen Sie stattdessen die Basisklasse-Ausnahme ab. MemberAccessException
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
Hinweis: In .NET für Windows Store Apps oder die Portable Class Library fangen Sie stattdessen die Basisklasse-Ausnahme ab. MissingMemberException
type
ist ein COM-Objekt, aber der Klassenbezeichner zum Abrufen des Typs ist ungültig , oder die bezeichnete Klasse wurde nicht registriert.
type
ist kein gültiger Typ.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die CreateInstance(Type) Methode aufgerufen wird. Instanzen verschiedener Typen werden erstellt, und deren Standardwerte werden angezeigt.
using namespace System;
ref class DynamicInstanceList
{
private:
static String^ instanceSpec = "System.EventArgs;System.Random;" +
"System.Exception;System.Object;System.Version";
public:
static void Main()
{
array<String^>^ instances = instanceSpec->Split(';');
Array^ instlist = Array::CreateInstance(Object::typeid, instances->Length);
Object^ item;
for (int i = 0; i < instances->Length; i++)
{
// create the object from the specification string
Console::WriteLine("Creating instance of: {0}", instances[i]);
item = Activator::CreateInstance(Type::GetType(instances[i]));
instlist->SetValue(item, i);
}
Console::WriteLine("\nObjects and their default values:\n");
for each (Object^ o in instlist)
{
Console::WriteLine("Type: {0}\nValue: {1}\nHashCode: {2}\n",
o->GetType()->FullName, o->ToString(), o->GetHashCode());
}
}
};
int main()
{
DynamicInstanceList::Main();
}
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
using System;
class DynamicInstanceList
{
private static string instanceSpec = "System.EventArgs;System.Random;" +
"System.Exception;System.Object;System.Version";
public static void Main()
{
string[] instances = instanceSpec.Split(';');
Array instlist = Array.CreateInstance(typeof(object), instances.Length);
object item;
for (int i = 0; i < instances.Length; i++)
{
// create the object from the specification string
Console.WriteLine("Creating instance of: {0}", instances[i]);
item = Activator.CreateInstance(Type.GetType(instances[i]));
instlist.SetValue(item, i);
}
Console.WriteLine("\nObjects and their default values:\n");
foreach (object o in instlist)
{
Console.WriteLine("Type: {0}\nValue: {1}\nHashCode: {2}\n",
o.GetType().FullName, o.ToString(), o.GetHashCode());
}
}
}
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
open System
let instanceSpec =
"System.EventArgs;System.Random;System.Exception;System.Object;System.Version"
let instances = instanceSpec.Split ';'
let instlist = Array.zeroCreate instances.Length
let mutable item = obj ()
for i = 0 to instances.Length - 1 do
// create the object from the specification string
printfn $"Creating instance of: {instances.[i]}"
item <- Activator.CreateInstance(Type.GetType instances.[i])
instlist.[i] <- item
printfn "\nObjects and their default values:\n"
for o in instlist do
printfn $"Type: {o.GetType().FullName}\nValue: {o}\nHashCode: {o.GetHashCode()}\n"
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
Class DynamicInstanceList
Private Shared instanceSpec As String = "System.EventArgs;System.Random;" + _
"System.Exception;System.Object;System.Version"
Public Shared Sub Main()
Dim instances() As String = instanceSpec.Split(";")
Dim instlist As Array = Array.CreateInstance(GetType(Object), instances.Length)
Dim item As Object
For i As Integer = 0 To instances.Length -1
' create the object from the specification string
Console.WriteLine("Creating instance of: {0}", instances(i))
item = Activator.CreateInstance(Type.GetType(instances(i)))
instlist.SetValue(item, i)
Next i
Console.WriteLine(Environment.NewLine + "Objects and their default values:" + Environment.NewLine)
For Each o As Object In instlist
Console.WriteLine("Type: {0}" + Environment.NewLine + "Value: {1}" + _
Environment.NewLine + "HashCode: {2}" + Environment.NewLine, _
o.GetType().FullName, o.ToString(), o.GetHashCode())
Next o
End Sub
End Class
' This program will display output similar to the following:
'
' Creating instance of: System.EventArgs
' Creating instance of: System.Random
' Creating instance of: System.Exception
' Creating instance of: System.Object
' Creating instance of: System.Version
'
' Objects and their default values:
'
' Type: System.EventArgs
' Value: System.EventArgs
' HashCode: 46104728
'
' Type: System.Random
' Value: System.Random
' HashCode: 12289376
'
' Type: System.Exception
' Value: System.Exception: Exception of type 'System.Exception' was thrown.
' HashCode: 55530882
'
' Type: System.Object
' Value: System.Object
' HashCode: 30015890
'
' Type: System.Version
' Value: 0.0
' HashCode: 1048575
Hinweise
Der aufgerufene Konstruktor muss barrierefrei sein.
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nichtublice Typen zuzugreifen, wenn der Aufrufer mit dem ReflectionPermissionFlag.RestrictedMemberAccess Flag erteilt ReflectionPermission wurde und wenn der Grantsatz der Assembly, die die nichtpublic-Typen enthält, auf den Erteilungssatz des Aufrufers oder auf eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für
CreateInstance(ActivationContext)
Erstellt eine Instanz des Typs, der vom angegebenen ActivationContext-Objekt festgelegt wurde.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(ActivationContext ^ activationContext);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (ActivationContext activationContext);
static member CreateInstance : ActivationContext -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (activationContext As ActivationContext) As ObjectHandle
Parameter
- activationContext
- ActivationContext
Ein Aktivierungskontextobjekt, das das zu erstellende Objekt angibt.
Gibt zurück
Ein Handle, das für den Zugriff auf das neu erstellte Objekt entwrappt werden muss.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Verwenden Sie die ObjectHandle.Unwrap Methode, um den Rückgabewert auszufangen.
Der Aktivierungskontext wird während der manifestbasierten Aktivierung verwendet, um die Domänenrichtlinie einzurichten und ein anwendungsbasiertes Sicherheitsmodell bereitzustellen. Die ActivationContext Klasse enthält ein ApplicationIdentity Objekt, das Zugriff auf das Anwendungsmanifest bereitstellt. Weitere Informationen finden Sie in den Ausführungen zur ApplicationSecurityManager-Klasse.
Siehe auch
Gilt für
CreateInstance(AppDomain, String, String)
Erstellt eine Instanz des Typs mit dem in der angegebenen Remotedomäne angegebenen Namen unter Verwendung der angegebenen Assembly und des parameterlosen Konstruktors.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(AppDomain ^ domain, System::String ^ assemblyName, System::String ^ typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName);
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance (AppDomain domain, string assemblyName, string typeName);
static member CreateInstance : AppDomain * string * string -> System.Runtime.Remoting.ObjectHandle
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName As String, typeName As String) As ObjectHandle
Parameter
- domain
- AppDomain
Die Remotedomäne, in der der Typ typeName
erstellt wird.
- assemblyName
- String
Der Name der Assembly, in der der Typ mit dem Namen typeName
gesucht wird. Wenn assemblyName
null
ist, wird die derzeit ausgeführte Assembly durchsucht.
- typeName
- String
Der vollqualifizierte Name des Typs, von dem eine Instanz erstellt werden soll.
Gibt zurück
Ein Handle, das für den Zugriff auf die neu erstellte Instanz entwrappt werden muss.
- Attribute
Ausnahmen
typeName
oder domain
ist null
.
Es wurde kein übereinstimmender öffentlicher Konstruktor gefunden.
typename
wurde in assemblyName
nicht gefunden.
assemblyName
wurde nicht gefunden.
Der Aufrufer hat keine Berechtigung zum Aufrufen dieses Konstruktors.
Es kann keine Instanz eines abstrakten Typs erstellt werden.
- oder -
Dieser Member wurde durch einen Mechanismus mit später Bindung aufgerufen.
Der Konstruktor, der durch Reflektion aufgerufen wurde, hat eine Ausnahme ausgelöst.
Der COM-Typ wurde nicht über GetTypeFromProgID oder GetTypeFromCLSID abgerufen.
Die Erstellung der Typen TypedReference, ArgIterator, Void und RuntimeArgumentHandle bzw. von Arrays dieser Typen wird nicht unterstützt.
assemblyName
ist keine gültige Assembly.
- oder -
Die Common Language Runtime (CLR) Version 2.0 oder höher ist derzeit geladen, und assemblyName
wurde für eine höhere CLR-Version als die derzeit geladene kompiliert. Beachten Sie, dass die .NET Framework-Versionen 2.0, 3.0 und 3.5 alle CLR Version 2.0 verwenden.
Eine Assembly oder ein Modul wurde zweimal mit zwei unterschiedlichen Beweisen geladen.
- oder -
Der Assemblyname oder die Codebasis ist ungültig.
Hinweise
Die Methode gibt für die Nullable<T> Instanzen zurücknull
.
Verwenden Sie CreateInstance , wenn ein Host Code in einer Anwendungsdomäne ausführen muss, die eingeschränkte Sicherheitsberechtigungen aufweist.
Wird verwendet ObjectHandle.Unwrap , um den Rückgabewert aufzuheben.
Gilt für
CreateInstance<T>()
Erstellt mit dem parameterlosen Konstruktor eine Instanz des Typs, der vom angegebenen generischen Typparameter festgelegt wurde.
public:
generic <typename T>
static T CreateInstance();
public static T CreateInstance<T> ();
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T
Typparameter
- T
Der zu erstellende Typ.
Gibt zurück
- T
Ein Verweis auf das neu erstellte Objekt.
Ausnahmen
Eine Instanz einer abstrakten Klasse kann nicht erstellt werden, oder der Typ, der für T
angegeben ist, besitzt keinen parameterlosen Konstruktor.
Hinweis: In .NET für Windows Store Apps oder die portable Klassenbibliothek erfassen Sie stattdessen die Basisklassen-Ausnahme, MissingMemberExceptionsondern.
Hinweise
Die CreateInstance<T>() generische Methode wird von Compilern verwendet, um die Instanziierung von Typen zu implementieren, die durch Typparameter angegeben sind. In der folgenden generischen Methode verwendet beispielsweise die Implementierung von new T()
(gcnew T()
in C++) die CreateInstance<T>() generische Methode.
public:
generic <typename T> where T:gcnew()
static T Bar()
{
return gcnew T();
}
public static T Factory<T>() where T : new()
{
return new T();
}
let factory<'T when 'T : (new: unit -> 'T)> =
new 'T()
Public Shared Function Factory(Of T As New)() As T
Return New T()
End Function
Im Allgemeinen gibt es keine Verwendung für die CreateInstance<T>() generische Methode im Anwendungscode, da der Typ zur Kompilierungszeit bekannt sein muss. Wenn der Typ zur Kompilierungszeit bekannt ist, kann die normale Instanziierungssyntax verwendet werden (new
Operator in C#, New
in Visual Basicgcnew
, in C++). Wenn der Typ zur Kompilierungszeit nicht bekannt ist, können Sie eine nicht generische Überladung von CreateInstance.
Es gibt keine Überladungen der CreateInstance<T>() generischen Methode, die Argumentlisten verwendet, da die nicht generischen Überladungen von CreateInstance bereits spät gebundenen Konstruktorauflösungen bereitgestellt werden.