Activator.CreateInstance Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.
Przeciążenia
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Przestarzałe.
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(Type, Object[], Object[]) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(String, String, Object[]) |
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Przestarzałe.
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(Type, Object[]) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów. |
CreateInstance(Type, Boolean) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu. |
CreateInstance(String, String) |
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów. |
CreateInstance(ActivationContext, String[]) |
Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt i aktywowane przy użyciu określonych niestandardowych danych aktywacji. |
CreateInstance(Type) |
Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu. |
CreateInstance(ActivationContext) |
Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt. |
CreateInstance(AppDomain, String, String) |
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora bez parametrów. |
CreateInstance<T>() |
Tworzy wystąpienie typu wyznaczonego przez określony parametr typu ogólnego przy użyciu konstruktora bez parametrów. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestroga
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.
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- domain
- AppDomain
Domena, w której jest tworzony typ o nazwie typeName
.
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
- ignoreCase
- Boolean
true
aby określić, że wyszukiwanie typeName
nie uwzględnia wielkości liter; false
aby określić, że wyszukiwanie uwzględnia wielkość liter.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName
. Jeśli bindingAttr
wartość jest równa zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora typeName
. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które regulują przymus do args
typów formalnych zadeklarowanych dla konstruktora typeName
. Jeśli culture
parametr ma null
wartość , CultureInfo jest używany dla bieżącego wątku.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt. Parametr UrlAttribute określa adres URL wymagany do aktywowania obiektu zdalnego.
- securityAttributes
- Evidence
Informacje używane do podejmowania decyzji dotyczących zasad zabezpieczeń i udzielania uprawnień do kodu.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
- Atrybuty
Wyjątki
domain
lub typeName
ma wartość null
.
Nie znaleziono pasującego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Konstruktor, który został wywołany przez odbicie, zwrócił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Uwagi
Użyj CreateInstance polecenia , gdy host musi wykonać kod w domenie aplikacji, która ma ograniczone uprawnienia zabezpieczeń.
Użyj polecenia ObjectHandle.Unwrap , aby odpakować wartość zwracaną.
Dotyczy
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- domain
- AppDomain
Domena, w której jest tworzony typ o nazwie typeName
.
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
- ignoreCase
- Boolean
true
aby określić, że wyszukiwanie typeName
nie uwzględnia wielkości liter; false
aby określić, że wyszukiwanie uwzględnia wielkość liter.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName
. Jeśli bindingAttr
wartość jest równa zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora typeName
. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które regulują przymus do args
typów formalnych zadeklarowanych dla konstruktora typeName
. Jeśli culture
parametr ma null
wartość , CultureInfo jest używany dla bieżącego wątku.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
- Atrybuty
Wyjątki
domain
lub typeName
ma wartość null
.
Nie znaleziono pasującego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Konstruktor, który został wywołany przez odbicie, zwrócił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Uwagi
Użyj CreateInstance polecenia , gdy host musi wykonać kod w domenie aplikacji, która ma ograniczone uprawnienia zabezpieczeń.
Użyj polecenia ObjectHandle.Unwrap , aby odpakować wartość zwracaną.
Dotyczy
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
- ignoreCase
- Boolean
true
aby określić, że wyszukiwanie typeName
nie uwzględnia wielkości liter; false
aby określić, że wyszukiwanie uwzględnia wielkość liter.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName
. Jeśli bindingAttr
wartość jest równa zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora typeName
. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które regulują przymus do args
typów formalnych zadeklarowanych dla konstruktora typeName
. Jeśli culture
parametr ma null
wartość , CultureInfo jest używany dla bieżącego wątku.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego wystąpienia lub null
dla Nullable<T> wystąpień bez wartości.
Wyjątki
typeName
to null
.
Nie znaleziono pasującego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Konstruktor, który został wywołany przez odbicie, zwrócił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Uwagi
Użyj polecenia ObjectHandle.Unwrap , aby odpakować wartość zwracaną.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do tworzenia typów niepublikujących i elementów członkowskich, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw dotacji zestawu, który zawiera typy niepubliczne i elementy członkowskie jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora type
. Jeśli bindingAttr
wartość jest równa zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora type
. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które regulują przymus do args
typów formalnych zadeklarowanych dla konstruktora type
. Jeśli culture
parametr ma null
wartość , CultureInfo jest używany dla bieżącego wątku.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
Wyjątki
type
to null
.
type
nie jest .RuntimeType
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca wartość true
).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
Zestaw zawierający type
jest zestawem dynamicznym utworzonym za pomocą Savepolecenia .
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego konstruktora.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Uwagi
Konstruktor, który ma być wywoływany, musi zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów w ramach ograniczeń określonego powiązania i atrybutów powiązania.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublikacyjnych i elementów członkowskich, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw dotacji typów niepublicyjnych i członków jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora type
. Jeśli bindingAttr
wartość jest równa zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora type
. Jeśli binder
parametr ma null
wartość , jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które regulują przymus do args
typów formalnych zadeklarowanych dla konstruktora type
. Jeśli culture
parametr ma null
wartość , CultureInfo jest używany dla bieżącego wątku.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
Wyjątki
type
to null
.
type
nie jest .RuntimeType
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca wartość true
).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
Zestaw zawierający type
jest zestawem dynamicznym utworzonym za pomocą Savepolecenia .
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego konstruktora.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Uwagi
Konstruktor, który ma być wywoływany, musi zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów w ramach ograniczeń określonego powiązania i atrybutów powiązania.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublikacyjnych i elementów członkowskich, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw dotacji zestawu, który zawiera typy niepubliczne i elementy członkowskie są ograniczone do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(Type, Object[], Object[])
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
- args
- Object[]
Tablica argumentów, które są zgodne z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje żadnych parametrów (konstruktor bez parametrów) jest wywoływany.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
Wyjątki
type
to null
.
type
nie jest .RuntimeType
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca wartość true
).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
Zestaw zawierający type
jest zestawem dynamicznym utworzonym za pomocą Savepolecenia .
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego publicznego konstruktora.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Uwagi
Konstruktor, który ma być wywoływany, musi być dostępny i musi zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublikacyjnych, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw przyznawania zestawu, który zawiera typy niepubliczne, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(String, String, Object[])
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów.
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
Parametry
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest zachowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
Zwraca
Uchwyt, który musi być rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Wyjątki
typeName
to null
.
Nie znaleziono pasującego publicznego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z klasy MarshalByRefObject.
-lub-
activationAttributes
nie jest UrlAttribute
Tablicy.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Wywoływany konstruktor zgłasza wyjątek.
-lub-
Wystąpił błąd podczas próby aktywacji zdalnej w obiekcie docelowym określonym w activationAttributes
pliku .
Uwagi
Użyj ObjectHandle.Unwrap polecenia , aby odpakować wartość zwracaną.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do tworzenia typów niepublicowych, jeśli obiekt wywołujący otrzymał ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess flagę, a zestaw dotacji typów niepublikacyjnych jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń do odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Przestroga
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.
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
jest to null
, przeszukiwany jest wykonywany zestaw.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
- ignoreCase
- Boolean
true
aby określić, że wyszukiwanie nie jest uwzględniane wielkości liter; false
aby określić, czy wyszukiwanie typeName
ma wielkość liter.
- bindingAttr
- BindingFlags
Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName
. W przypadku bindingAttr
zera przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.
- binder
- Binder
Obiekt, który używa bindingAttr
elementu i args
do wyszukiwania i identyfikowania konstruktora typeName
. Jeśli binder
jest to null
, jest używany domyślny binder.
- args
- Object[]
Tablica argumentów, które pasują do liczby, kolejności i wpisz parametry konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje parametrów (konstruktor bez parametrów) jest wywoływany.
- culture
- CultureInfo
Informacje specyficzne dla kultury, które zarządzają przymusem args
do typów formalnych zadeklarowanych dla konstruktora typeName
. Jeśli culture
jest to null
, CultureInfo jest używany element dla bieżącego wątku.
- activationAttributes
- Object[]
Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego.
Ten parametr jest powiązany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest zachowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.
- securityInfo
- Evidence
Informacje używane do podejmowania decyzji dotyczących zasad zabezpieczeń i udzielania uprawnień kodu.
Zwraca
Dojście, które musi być niezapisane w celu uzyskania dostępu do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
- Atrybuty
Wyjątki
typeName
to null
.
Nie znaleziono pasującego konstruktora.
typename
nie znaleziono w pliku assemblyName
.
assemblyName
nie znaleziono.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem późnego powiązania.
Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi lub RuntimeArgumentHandle tablic tych typów nie jest obsługiwane.
-lub-
activationAttributes
nie jest pustą tablicą, a tworzony typ nie pochodzi z MarshalByRefObjectklasy .
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż aktualnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Uwagi
Użyj ObjectHandle.Unwrap polecenia , aby odpakować wartość zwracaną.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do tworzenia typów niepublicowych i elementów członkowskich, jeśli obiekt wywołujący otrzymał ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess flagę, a jeśli zestaw dotacji zestawu zawierający typy niepublicowe i elementy członkowskie są ograniczone do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń do odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(Type, Object[])
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
- args
- Object[]
Tablica argumentów, które pasują do liczby, kolejności i wpisz parametry konstruktora do wywołania. Jeśli args
jest pustą tablicą lub null
, konstruktor, który nie przyjmuje parametrów (konstruktor bez parametrów) jest wywoływany.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
dla Nullable<T> wystąpień bez wartości.
Wyjątki
type
to null
.
type
nie jest elementem RuntimeType
.
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca true
wartość ).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi lub RuntimeArgumentHandle tablic tych typów nie jest obsługiwane.
-lub-
Zestaw, który zawiera type
, jest zestawem dynamicznym utworzonym za pomocą polecenia Save.
-lub-
Konstruktor, który najlepiej pasuje args
, ma varargs
argumenty.
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Uwaga: na platformie .NET dla aplikacji ze Sklepu Windows lub przenośnej biblioteki klas przechwyć wyjątek klasy bazowej , MemberAccessExceptionzamiast tego.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem późnego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego publicznego konstruktora.
Uwaga: na platformie .NET dla aplikacji ze Sklepu Windows lub przenośnej biblioteki klas przechwyć wyjątek klasy bazowej , MissingMemberExceptionzamiast tego.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Przykłady
Poniższy przykład wywołuje metodę CreateInstance(Type, Object[]) w celu utworzenia String obiektu. Wywołuje konstruktor do String.String(Char[], Int32, Int32) utworzenia wystąpienia ciągu zawierającego dziesięć elementów z tablicy znaków rozpoczynającej się od czternastej pozycji.
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
Poniższy przykład tworzy poszarpaną tablicę, której elementy są argumentami przekazywanymi do konstruktora String . W przykładzie następnie każda tablica jest przekazywana do CreateInstance(Type, Object[]) metody w celu wywołania odpowiedniego konstruktora ciągów.
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
Uwagi
Konstruktor, który ma być wywoływany, musi być dostępny i musi zapewnić najbardziej specyficzne dopasowanie z określoną listą argumentów.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublicowych, jeśli obiekt wywołujący otrzymał ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess flagę, a zestaw dotacji zawierający typy niepublicowe jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń do odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(Type, Boolean)
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
- nonPublic
- Boolean
true
jeśli publiczny lub niepublikujący konstruktor bez parametrów może być zgodny; false
jeśli tylko publiczny konstruktor bez parametrów może być zgodny.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Wyjątki
type
to null
.
type
nie jest elementem RuntimeType
.
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca true
wartość ).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi lub RuntimeArgumentHandle tablic tych typów nie jest obsługiwane.
-lub-
Zestaw, który zawiera type
, jest zestawem dynamicznym utworzonym za pomocą polecenia Save.
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem późnego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego publicznego konstruktora.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Uwagi
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublikacyjnych i elementów członkowskich, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw dotacji zestawu, który zawiera typy niepubliczne i elementy członkowskie są ograniczone do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(String, String)
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie typu, którego nazwa jest określona, przy użyciu nazwanego zestawu i konstruktora bez parametrów.
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
Parametry
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Wyjątki
typeName
to null
.
Nie znaleziono pasującego publicznego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem późnego powiązania.
Konstruktor, który został wywołany przez odbicie, zwrócił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Przykłady
W poniższym przykładzie zdefiniowano klasę o nazwie Person
w zestawie o nazwie PersonInfo
. Należy pamiętać, że Person
klasa ma dwa konstruktory, z których jeden jest bez parametrów.
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
Poniższy przykład wywołuje metodę CreateInstance(String, String) , aby utworzyć Person
wystąpienie klasy. Wymaga to odwołania do PersonInfo.dll do dodania do projektu. CreateInstance(String, String) Ponieważ metoda wywołuje Person
konstruktor bez parametrów klasy, przykład przypisuje wartość do jej Name
właściwości.
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
Jednak jest często wywoływany w CreateInstance celu utworzenia wystąpienia typu, który przekracza granice maszyny lub który nie jest znany w czasie projektowania. W takim przypadku nie można dołączyć odwołania do zestawu w projekcie i nie można wykonać wywołań na początku powiązanych elementów członkowskich typu. Aby obejść to ograniczenie, w poniższym przykładzie użyto CreateInstance metody wraz z odbiciem, aby przypisać wartość do Person
właściwości obiektu Name
i wyświetlić jego wartość.
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
Uwagi
Użyj polecenia ObjectHandle.Unwrap , aby odpakować wartość zwracaną.
assemblyName
może być jednym z następujących elementów:
Prosta nazwa zestawu bez jego ścieżki lub rozszerzenia pliku. Można na przykład określić
TypeExtensions
zestaw, którego ścieżka i nazwa to .\bin\TypeExtensions.dll.Pełna nazwa podpisanego zestawu, który składa się z prostej nazwy, wersji, kultury i tokenu klucza publicznego; na przykład "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".
Aby uzyskać więcej informacji na temat sposobu identyfikowania i ładowania zestawów w środowisku uruchomieniowym języka wspólnego, zobacz Jak środowisko uruchomieniowe lokalizuje zestawy. Aby uzyskać informacje na temat używania pliku konfiguracji aplikacji do definiowania lokalizacji zestawów, zobacz Określanie lokalizacji zestawu. Jeśli assemblyName
zostanie znaleziony, zostanie załadowany w kontekście domyślnym.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do tworzenia typów niepublikacyjnych, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw dotacji zawierający typy niepubliczne jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(ActivationContext, String[])
Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt i aktywowane przy użyciu określonych niestandardowych danych aktywacji.
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
Parametry
- activationContext
- ActivationContext
Obiekt kontekstu aktywacji, który określa obiekt do utworzenia.
- activationCustomData
- String[]
Tablica ciągów Unicode, które zawierają niestandardowe dane aktywacji.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Uwagi
ObjectHandle.Unwrap Użyj metody , aby odpakować wartość zwracaną.
Kontekst aktywacji jest używany podczas aktywacji opartej na manifeście w celu skonfigurowania zasad domeny i zapewnienia modelu zabezpieczeń opartego na aplikacji. Klasa ActivationContext zawiera ApplicationIdentity obiekt, który zapewnia dostęp do manifestu aplikacji. Aby uzyskać więcej informacji, zobacz klasę ApplicationSecurityManager .
Zobacz też
Dotyczy
CreateInstance(Type)
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
- Źródło:
- Activator.cs
Tworzy wystąpienie określonego typu przy użyciu konstruktora bez parametrów tego typu.
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
Parametry
- type
- Type
Typ obiektu do utworzenia.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Wyjątki
type
to null
.
type
nie jest .RuntimeType
-lub-
type
jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca wartość true
).
type
nie może być elementem TypeBuilder.
-lub-
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
-lub-
Zestaw zawierający type
jest zestawem dynamicznym utworzonym za pomocą Savepolecenia .
Wywoływany konstruktor zgłasza wyjątek.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Uwaga: na platformie .NET dla aplikacji ze Sklepu Windows lub biblioteki klas przenośnych przechwyć wyjątek klasy bazowej , MemberAccessExceptionzamiast tego.
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem opóźnionego powiązania.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
Nie znaleziono pasującego publicznego konstruktora.
Uwaga: na platformie .NET dla aplikacji ze Sklepu Windows lub biblioteki klas przenośnych przechwyć wyjątek klasy bazowej , MissingMemberExceptionzamiast tego.
type
jest obiektem COM, ale identyfikator klasy używany do uzyskania typu jest nieprawidłowy lub zidentyfikowana klasa nie jest zarejestrowana.
type
jest nieprawidłowym typem.
Przykłady
W poniższym przykładzie kodu pokazano, jak wywołać metodę CreateInstance(Type) . Wystąpienia kilku różnych typów są tworzone, a ich wartości domyślne są wyświetlane.
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
Uwagi
Konstruktor, który ma być wywoływany, musi być dostępny.
Uwaga
Począwszy od programu .NET Framework 2.0, ta metoda może służyć do uzyskiwania dostępu do typów niepublikacyjnych, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess i jeśli zestaw przyznawania zestawu, który zawiera typy niepubliczne, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zagadnienia dotyczące zabezpieczeń dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa dla programu .NET Framework 3.5 lub nowszego.
Dotyczy
CreateInstance(ActivationContext)
Tworzy wystąpienie typu wyznaczonego przez określony ActivationContext obiekt.
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
Parametry
- activationContext
- ActivationContext
Obiekt kontekstu aktywacji, który określa obiekt do utworzenia.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Uwagi
ObjectHandle.Unwrap Użyj metody , aby odpakować wartość zwracaną.
Kontekst aktywacji jest używany podczas aktywacji opartej na manifeście w celu skonfigurowania zasad domeny i zapewnienia modelu zabezpieczeń opartego na aplikacji. Klasa ActivationContext zawiera ApplicationIdentity obiekt, który zapewnia dostęp do manifestu aplikacji. Aby uzyskać więcej informacji, zobacz klasę ApplicationSecurityManager .
Zobacz też
Dotyczy
CreateInstance(AppDomain, String, String)
Tworzy wystąpienie typu, którego nazwa jest określona w określonej domenie zdalnej, przy użyciu nazwanego zestawu i konstruktora bez parametrów.
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
Parametry
- domain
- AppDomain
Domena zdalna, w której jest tworzony typ o nazwie typeName
.
- assemblyName
- String
Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName
. Jeśli assemblyName
parametr ma null
wartość , przeszukiwany jest zestaw wykonujący.
- typeName
- String
W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.
Zwraca
Uchwyt, który musi być niezapisany, aby uzyskać dostęp do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
- Atrybuty
Wyjątki
typeName
lub domain
ma wartość null
.
Nie znaleziono pasującego publicznego konstruktora.
typename
nie można odnaleźć w pliku assemblyName
.
assemblyName
nie można odnaleźć.
Obiekt wywołujący nie ma uprawnień do wywoływania tego konstruktora.
Nie można utworzyć wystąpienia typu abstrakcyjnego.
-lub-
Ten element członkowski został wywołany z użyciem mechanizmu opóźnionego wiązania.
Konstruktor, który został wywołany przez odbicie, zwrócił wyjątek.
Typ COM nie został uzyskany za pomocą elementu GetTypeFromProgID lub GetTypeFromCLSID.
TypedReferenceTworzenie typów , ArgIterator, Voidi RuntimeArgumentHandle lub tablic tych typów nie jest obsługiwane.
assemblyName
nie jest prawidłowym zestawem.
-lub-
Środowisko uruchomieniowe języka wspólnego (CLR) w wersji 2.0 lub nowszej jest obecnie ładowane i assemblyName
zostało skompilowane dla wersji środowiska CLR nowszej niż obecnie załadowana wersja. Należy pamiętać, że programy .NET Framework w wersji 2.0, 3.0 i 3.5 używają środowiska CLR w wersji 2.0.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
Nazwa zestawu lub baza kodu jest nieprawidłowa.
Uwagi
Użyj CreateInstance polecenia , gdy host musi wykonać kod w domenie aplikacji, która ma ograniczone uprawnienia zabezpieczeń.
Użyj polecenia ObjectHandle.Unwrap , aby odpakować wartość zwracaną.
Dotyczy
CreateInstance<T>()
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
- Źródło:
- Activator.RuntimeType.cs
Tworzy wystąpienie typu wyznaczonego przez określony parametr typu ogólnego przy użyciu konstruktora bez parametrów.
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
Parametry typu
- T
Typ do utworzenia.
Zwraca
Odwołanie do nowo utworzonego obiektu lub null
na Nullable<T> przykład.
Wyjątki
Nie można utworzyć wystąpienia klasy abstrakcyjnej lub typu określonego dla T
elementu nie ma konstruktora bez parametrów.
Uwaga: na platformie .NET dla aplikacji ze Sklepu Windows lub biblioteki klas przenośnych przechwyć wyjątek klasy bazowej , MissingMemberExceptionzamiast tego.
Uwagi
Metoda CreateInstance<T>() ogólna jest używana przez kompilatory do implementowania wystąpienia typów określonych przez parametry typu. Na przykład w poniższej metodzie ogólnej implementacja new T()
metody (gcnew T()
w języku C++) używa CreateInstance<T>() metody ogólnej.
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
Ogólnie rzecz biorąc, nie ma użycia metody CreateInstance<T>() ogólnej w kodzie aplikacji, ponieważ typ musi być znany w czasie kompilacji. Jeśli typ jest znany w czasie kompilacji, można użyć składni wystąpienia normalnego (new
operator w języku C#, New
w Języku Visual Basic gcnew
w języku C++). Jeśli typ nie jest znany w czasie kompilacji, można wywołać nieogólne przeciążenie klasy CreateInstance.
Nie ma przeciążeń CreateInstance<T>() metody ogólnej, które przyjmują listy argumentów, ponieważ nieogólne przeciążenia już zapewniają opóźnione rozpoznawanie konstruktorów CreateInstance .
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla