Activator.CreateInstance Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával.
Túlterhelések
| Name | Description |
|---|---|
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Elavult.
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a megadott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek. |
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a megadott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Létrehoz egy olyan példányt, amelynek a neve meg van adva, a névvel ellátott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával. |
| CreateInstance(Type, Object[], Object[]) |
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával. |
| CreateInstance(String, String, Object[]) |
Létrehoz egy olyan példányt, amelynek a neve meg van adva a névvel ellátott szerelvény és a paraméter nélküli konstruktor használatával. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Elavult.
Létrehoz egy olyan példányt, amelynek a neve meg van adva, a névvel ellátott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek. |
| CreateInstance(Type, Object[]) |
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával. |
| CreateInstance(Type, Boolean) |
Létrehoz egy példányt a megadott típusból az adott típus paraméter nélküli konstruktorával. |
| CreateInstance(String, String) |
Létrehoz egy olyan példányt, amelynek a neve meg van adva a névvel ellátott szerelvény és a paraméter nélküli konstruktor használatával. |
| CreateInstance(ActivationContext, String[]) |
Létrehoz egy, a megadott ActivationContext objektum által kijelölt és a megadott egyéni aktiválási adatokkal aktivált példányt. |
| CreateInstance(Type) |
Létrehoz egy példányt a megadott típusból az adott típus paraméter nélküli konstruktorával. |
| CreateInstance(ActivationContext) |
Létrehoz egy példányt a megadott ActivationContext objektum által kijelölt típusból. |
| CreateInstance(AppDomain, String, String) |
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a nevesített szerelvény és a paraméter nélküli konstruktor használatával. |
| CreateInstance<T>() |
Létrehozza a megadott általános típusparaméter által kijelölt típuspéldányt a paraméter nélküli konstruktor használatával. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Figyelemfelhívás
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.
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a megadott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek.
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
Paraméterek
- domain
- AppDomain
Az a tartomány, ahol a névvel ellátott typeName típus létrejön.
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
- ignoreCase
- Boolean
true a typeName kis- és nagybetűk megkülönböztetése; false a kis- és nagybetűk megkülönböztetése.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését typeName . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja typeName . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére typeName vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz. A UrlAttribute távoli objektum aktiválásához szükséges URL-címet adja meg.
- securityAttributes
- Evidence
A biztonsági szabályzattal kapcsolatos döntések meghozatalához és a kódengedélyek megadásához használt információk.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum eléréséhez, vagy null érték Nullable<T> nélküli példányokhoz.
- Attribútumok
Kivételek
domain vagy typeName az null.
Nem található egyező konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Megjegyzések
Akkor használható CreateInstance , ha egy gazdagépnek korlátozott biztonsági engedélyekkel rendelkező alkalmazástartományban kell kódot végrehajtania.
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
A következőre érvényes:
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a megadott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek.
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
Paraméterek
- domain
- AppDomain
Az a tartomány, ahol a névvel ellátott typeName típus létrejön.
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
- ignoreCase
- Boolean
true a typeName kis- és nagybetűk megkülönböztetése; false a kis- és nagybetűk megkülönböztetése.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését typeName . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja typeName . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére typeName vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum eléréséhez, vagy null érték Nullable<T> nélküli példányokhoz.
- Attribútumok
Kivételek
domain vagy typeName az null.
Nem található egyező konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Megjegyzések
Akkor használható CreateInstance , ha egy gazdagépnek korlátozott biztonsági engedélyekkel rendelkező alkalmazástartományban kell kódot végrehajtania.
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
A következőre érvényes:
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
Létrehoz egy olyan példányt, amelynek a neve meg van adva, a névvel ellátott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek.
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.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
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);
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.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
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
Paraméterek
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
- ignoreCase
- Boolean
true a typeName kis- és nagybetűk megkülönböztetése; false a kis- és nagybetűk megkülönböztetése.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését typeName . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja typeName . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére typeName vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott példány eléréséhez, vagy null az Nullable<T> érték nélküli példányokhoz.
- Attribútumok
Kivételek
typeName az null.
Nem található egyező konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Megjegyzések
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.
Note
Ez a módszer nem nyilvános típusok és tagok létrehozására használható, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat és tagokat tartalmazó közgyűlés támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését type . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja type . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére type vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null érték Nullable<T> nélküli példányokra.
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező konstruktor.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Megjegyzések
A meghívandó konstruktornak a megadott kötési és kötési attribútumok korlátozásai alapján meg kell adnia a megadott argumentumlistával a legspecifikusabb egyezést.
Note
Ez a módszer akkor használható a nem nyilvános típusok és tagok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem nyilvános típusok és tagok támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését type . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja type . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére type vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null érték Nullable<T> nélküli példányokra.
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező konstruktor.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Megjegyzések
A meghívandó konstruktornak a megadott kötési és kötési attribútumok korlátozásai alapján meg kell adnia a megadott argumentumlistával a legspecifikusabb egyezést.
Note
Ez a módszer akkor használható a nem nyilvános típusok és tagok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat és tagokat tartalmazó közgyűlés támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(Type, Object[], Object[])
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null érték Nullable<T> nélküli példányokra.
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező nyilvános konstruktor.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Megjegyzések
A meghívandó konstruktornak elérhetőnek kell lennie, és meg kell adnia a megadott argumentumlistával a legspecifikusabb egyezést.
Note
Ez a módszer akkor használható a nem nyilvános típusok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat tartalmazó szerelvény engedélyezési készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(String, String, Object[])
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
Létrehoz egy olyan példányt, amelynek a neve meg van adva a névvel ellátott szerelvény és a paraméter nélküli konstruktor használatával.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
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);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
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
Paraméterek
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum vagy null példányok Nullable<T> eléréséhez.
- Attribútumok
Kivételek
typeName az null.
Nem található egyező nyilvános konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
activationAttributes nem egy UrlAttribute
tömb.
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
A meghívott konstruktor kivételt jelez.
-vagy-
Hiba történt, amikor távoli aktiválást kísérelt meg a megadott célban activationAttributes.
Megjegyzések
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.
Note
Ez a módszer nem közzétételi típusok létrehozására használható, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem nyilvános típusok támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Figyelemfelhívás
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.
Létrehoz egy olyan példányt, amelynek a neve meg van adva, a névvel ellátott szerelvény és a konstruktor használatával, amely a legjobban megfelel a megadott paramétereknek.
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
Paraméterek
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
- ignoreCase
- Boolean
true a typeName kis- és nagybetűk megkülönböztetése; false a kis- és nagybetűk megkülönböztetése.
- bindingAttr
- BindingFlags
Nulla vagy több bitjelző kombinációja, amelyek befolyásolják a konstruktor keresését typeName . Ha bindingAttr nulla, akkor a rendszer megkülönbözteti a nyilvános konstruktorok kis- és nagybetűket.
- binder
- Binder
Egy objektum, amely a konstruktort használja bindingAttr és args keresi és azonosítja typeName . Ha binder igen null, akkor a rendszer az alapértelmezett kötőanyagot használja.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
- culture
- CultureInfo
Kultúraspecifikus információk, amelyek a konstruktor számára args deklarált formális típusok kényszerítésére typeName vonatkoznak. Ha culture igen null, akkor a rendszer az CultureInfo aktuális szálat használja.
- activationAttributes
- Object[]
Egy vagy több attribútum tömbje, amely részt vehet az aktiválásban. Ez általában egy tömb, amely egyetlen UrlAttribute objektumot tartalmaz, amely megadja a távoli objektumok aktiválásához szükséges URL-címet.
Ez a paraméter ügyfél által aktivált objektumokhoz kapcsolódik. Az ügyfélaktiválás egy régi technológia, amely megmarad a visszamenőleges kompatibilitás érdekében, de nem ajánlott az új fejlesztéshez. Az elosztott alkalmazásoknak ehelyett Windows kommunikációs alaprendszer kell használniuk.
- securityInfo
- Evidence
A biztonsági szabályzattal kapcsolatos döntések meghozatalához és a kódengedélyek megadásához használt információk.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum eléréséhez, vagy null érték Nullable<T> nélküli példányokhoz.
- Attribútumok
Kivételek
typeName az null.
Nem található egyező konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
activationAttributes nem üres tömb, és a létrehozott típus nem a következőből MarshalByRefObjectszármazik: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Megjegyzések
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
Note
Ez a módszer nem nyilvános típusok és tagok létrehozására használható, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat és tagokat tartalmazó közgyűlés támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(Type, Object[])
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
A megadott típus egy példányát hozza létre a megadott paramétereknek leginkább megfelelő konstruktor használatával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
- args
- Object[]
Argumentumok tömbje, amelyek számban, sorrendben és a meghívandó konstruktor paramétereinek beírásával egyeznek. Ha args üres tömb, vagy nullha a konstruktor nem használ paramétereket (a paraméter nélküli konstruktort) meghívja.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null érték Nullable<T> nélküli példányokra.
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
-vagy-
A legjobban megfeleltetendő args konstruktor argumentumokkal rendelkezik varargs .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MemberAccessException.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező nyilvános konstruktor.
Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MissingMemberException.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Példák
Az alábbi példa meghívja a CreateInstance(Type, Object[]) metódust egy String objektum létrehozásához. Meghívja a String.String(Char[], Int32, Int32) konstruktort, hogy hozzon létre egy sztringet, amely tíz elemet tartalmaz egy karaktertömbből a tizennegyedik pozíciótól kezdve.
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
Az alábbi példa egy szaggatott tömböt hoz létre, amelynek elemei argumentumok, amelyeket át kell adni egy String konstruktornak. A példa ezután átadja az egyes tömböket a metódusnak a CreateInstance(Type, Object[]) megfelelő sztringkonstruktor meghívásához.
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
Megjegyzések
A meghívandó konstruktornak elérhetőnek kell lennie, és meg kell adnia a megadott argumentumlistával a legspecifikusabb egyezést.
Note
Ez a módszer akkor használható a nem nyilvános típusok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat tartalmazó szerelvény engedélyezési készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(Type, Boolean)
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
Létrehoz egy példányt a megadott típusból az adott típus paraméter nélküli konstruktorával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
- nonPublic
- Boolean
true ha egy nyilvános vagy nem nyilvános paraméter nélküli konstruktor megfelelhet; false ha csak egy nyilvános paraméter nélküli konstruktor tud egyezni.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null példányokra Nullable<T> .
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező nyilvános konstruktor.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Megjegyzések
Note
Ez a módszer akkor használható a nem nyilvános típusok és tagok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat és tagokat tartalmazó közgyűlés támogatási készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(String, String)
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
Létrehoz egy olyan példányt, amelynek a neve meg van adva a névvel ellátott szerelvény és a paraméter nélküli konstruktor használatával.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle
Paraméterek
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum vagy null példányok Nullable<T> eléréséhez.
- Attribútumok
Kivételek
typeName az null.
Nem található egyező nyilvános konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt osztálypéldány nem hozható létre, vagy ezt a tagot késői kötési mechanizmussal hívták meg.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Példák
Az alábbi példa egy szerelvényben Personelnevezett PersonInfo osztályt határoz meg. Vegye figyelembe, hogy az Person osztálynak két konstruktora van, amelyek közül az egyik paraméter nélküli.
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
Az alábbi példa meghívja a metódust az CreateInstance(String, String) osztály példányosítására Person . A projekthez hozzá kell adni a PersonInfo.dll hivatkozását. Mivel a CreateInstance(String, String) metódus paraméter nélküli konstruktornak hívja az Person osztályt, a példa egy értéket rendel hozzá a tulajdonságához Name .
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
Gyakran előfordul azonban, hogy olyan típust szeretne példányosítani, CreateInstance amely átlépi a gép határait, vagy amely a tervezéskor nem ismert. Ebben az esetben nem hivatkozhat a projekt szerelvényére, és nem kezdeményezhet korai hívásokat a típus tagjaihoz. A korlátozás megkerüléséhez az alábbi példa a metódust és a CreateInstance tükröződést használja egy érték hozzárendeléséhez az Person objektum tulajdonságához Name , és megjeleníti annak értékét.
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
Megjegyzések
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
assemblyName az alábbiak bármelyike lehet:
Egy szerelvény egyszerű neve, elérési útja vagy fájlkiterjesztése nélkül. Megadhat például egy olyan szerelvényt,
TypeExtensionsamelynek elérési útja és neve .\bin\TypeExtensions.dll.Egy aláírt szerelvény teljes neve, amely egyszerű nevéből, verziójából, kultúrájából és nyilvános kulcs jogkivonatából áll; például: "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".
További információ arról, hogy a közös nyelvi futtatókörnyezet hogyan azonosítja és tölti be az szerelvényeket, olvassa el a Futtatókörnyezet szerelvények megkeresése című témakört. Az alkalmazáskonfigurációs fájl szerelvényhelyek meghatározására való használatával kapcsolatos információkért lásd: Szerelvény helyének megadása. Ha assemblyName megtalálható, az alapértelmezett környezetben lesz betöltve.
.NET Core 3.0-s és újabb verzióiban az API által aktivált szerelvényterheléseket a AssemblyLoadContext.CurrentContextualReflectionContext aktuális értéke befolyásolja.
Note
Ez a módszer nem nyilvános típusok létrehozására használható, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat tartalmazó szerelvény engedélyezési készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(ActivationContext, String[])
Létrehoz egy, a megadott ActivationContext objektum által kijelölt és a megadott egyéni aktiválási adatokkal aktivált példányt.
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
Paraméterek
- activationContext
- ActivationContext
Aktiválási környezet objektum, amely meghatározza a létrehozandó objektumot.
- activationCustomData
- String[]
Egyéni aktiválási adatokat tartalmazó Unicode-sztringek tömbje.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum vagy null példányok Nullable<T> eléréséhez.
Megjegyzések
A metódus használatával ObjectHandle.Unwrap bontsa ki a visszatérési értéket.
Az aktiválási környezet a jegyzékalapú aktiválás során a tartományházirend beállítására és egy alkalmazásalapú biztonsági modell biztosítására szolgál. Az ActivationContext osztály tartalmaz egy ApplicationIdentity objektumot, amely hozzáférést biztosít az alkalmazásjegyzékhez. További információért lásd a ApplicationSecurityManager osztályt.
Lásd még
A következőre érvényes:
CreateInstance(Type)
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
- Forrás:
- Activator.cs
Létrehoz egy példányt a megadott típusból az adott típus paraméter nélküli konstruktorával.
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
Paraméterek
- type
- Type
A létrehozandó objektum típusa.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null példányokra Nullable<T> .
Kivételek
type az null.
type nem egy RuntimeType.
-vagy-
type egy nyitott általános típus (azaz a tulajdonság visszaadja ContainsGenericParameterstrue).
type nem lehet TypeBuilder.
-vagy-
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
-vagy-
A benne található type szerelvény egy dinamikus szerelvény, amely a következővel Savelett létrehozva: .
A konstruktor neve kivételt jelez.
A hívónak nincs engedélye a konstruktor meghívására.
Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MemberAccessException.
Absztrakt osztály példánya nem hozható létre, vagy a rendszer későn kötési mechanizmussal meghívta ezt a tagot.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
Nem található egyező nyilvános konstruktor.
Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MissingMemberException.
type COM-objektum, de a típus beszerzéséhez használt osztályazonosító érvénytelen, vagy az azonosított osztály nincs regisztrálva.
type érvénytelen típus.
Példák
Az alábbi példakód bemutatja, hogyan hívhatja meg a metódust CreateInstance(Type) . A rendszer több különböző típusú példányt hoz létre, és megjeleníti az alapértelmezett értékeket.
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
Megjegyzések
A meghívandó konstruktornak elérhetőnek kell lennie.
Note
Ez a módszer akkor használható a nem nyilvános típusok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem közzétételi típusokat tartalmazó szerelvény engedélyezési készlete a hívó támogatási készletére vagy annak egy részhalmazára korlátozódik. (Lásd: A tükröződés biztonsági szempontjai.) A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.
A következőre érvényes:
CreateInstance(ActivationContext)
Létrehoz egy példányt a megadott ActivationContext objektum által kijelölt típusból.
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
Paraméterek
- activationContext
- ActivationContext
Aktiválási környezet objektum, amely meghatározza a létrehozandó objektumot.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum vagy null példányok Nullable<T> eléréséhez.
Megjegyzések
A metódus használatával ObjectHandle.Unwrap bontsa ki a visszatérési értéket.
Az aktiválási környezet a jegyzékalapú aktiválás során a tartományházirend beállítására és egy alkalmazásalapú biztonsági modell biztosítására szolgál. Az ActivationContext osztály tartalmaz egy ApplicationIdentity objektumot, amely hozzáférést biztosít az alkalmazásjegyzékhez. További információért lásd a ApplicationSecurityManager osztályt.
Lásd még
A következőre érvényes:
CreateInstance(AppDomain, String, String)
Létrehoz egy olyan példányt, amelynek a neve a megadott távoli tartományban van megadva a nevesített szerelvény és a paraméter nélküli konstruktor használatával.
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
Paraméterek
- domain
- AppDomain
Az a távoli tartomány, ahol a névvel ellátott typeName típus létrejön.
- assemblyName
- String
Annak a szerelvénynek a neve, amelyben a típust typeName kérik. Ha assemblyName igen null, a program a végrehajtó szerelvényt keresi.
- typeName
- String
Annak a típusnak a teljes neve, amelyből példányt szeretne létrehozni.
Válaszok
Egy leíró, amelyet le kell bontani az újonnan létrehozott objektum vagy null példányok Nullable<T> eléréséhez.
- Attribútumok
Kivételek
typeName vagy domain az null.
Nem található egyező nyilvános konstruktor.
typeName nem található a következőben assemblyName: .
assemblyName nem található.
A hívónak nincs engedélye a konstruktor meghívására.
Absztrakt típusú példány nem hozható létre.
-vagy-
Ezt a tagot egy késői kötési mechanizmussal hívták meg.
A visszatükrözéssel meghívott konstruktor kivételt vetett ki.
A COM-típus nem a következőn keresztül GetTypeFromProgID lett beszerezve: vagy GetTypeFromCLSID.
TypedReferenceAz ilyen típusú , ArgIterator, Void, és RuntimeArgumentHandle típusok vagy tömbök létrehozása nem támogatott.
assemblyName nem érvényes szerelvény.
-vagy-
A közös nyelvi futtatókörnyezet (CLR) 2.0-s vagy újabb verziója jelenleg betöltve van, és assemblyName a CLR egy, a jelenleg betöltött verziónál későbbi verziójához lett lefordítva. Vegye figyelembe, hogy a .NET-keretrendszer 2.0-s, 3.0-s és 3.5-ös verziói mind a CLR 2.0-s verzióját használják.
Egy szerelvényt vagy modult kétszer töltöttek be két különböző bizonyítékkal.
-vagy-
A szerelvény neve vagy kódbázisa érvénytelen.
Megjegyzések
Akkor használható CreateInstance , ha egy gazdagépnek korlátozott biztonsági engedélyekkel rendelkező alkalmazástartományban kell kódot végrehajtania.
A visszatérési érték kibontására használható ObjectHandle.Unwrap .
A következőre érvényes:
CreateInstance<T>()
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
- Forrás:
- Activator.RuntimeType.cs
Létrehozza a megadott általános típusparaméter által kijelölt típuspéldányt a paraméter nélküli konstruktor használatával.
public:
generic <typename T>
static T CreateInstance();
public static T CreateInstance<T>();
public static T CreateInstance<T>() where T : allows ref struct;
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T
Típusparaméterek
- T
A létrehozandó típus.
Válaszok
Hivatkozás az újonnan létrehozott objektumra vagy null példányokra Nullable<T> .
Kivételek
Absztrakt osztály példánya nem hozható létre, vagy a megadott T típus nem rendelkezik paraméter nélküli konstruktorsal.
Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MissingMemberException.
Megjegyzések
A CreateInstance<T>() fordítók az általános módszert használják a típusparaméterek által megadott típusok példányosításának megvalósításához. A következő általános módszerben például az általános metódust new T() használja.CreateInstance<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
Az általános metódus általában nem használható az CreateInstance<T>() alkalmazáskódban, mert a típusnak fordításkor ismertnek kell lennie. Ha a típus fordításkor ismert, a normál példányosítás szintaxisa használható (new operátor a C#-ban, New Visual Basic). Ha a típus fordításkor nem ismert, meghívhatja a nem általános túlterhelését CreateInstance.
Az általános metódusnak nincsenek túlterhelései CreateInstance<T>() , amelyek argumentumlistákat vesznek fel, mivel a nem általános túlterhelések CreateInstance már késő kötött konstruktorfelbontást biztosítanak.