Udostępnij za pośrednictwem


Activator.CreateInstance Metoda

Definicja

Tworzy wystąpienie określonego typu przy użyciu konstruktora, który najlepiej pasuje do określonych parametrów.

Przeciążenia

Nazwa Opis
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)

Uwaga

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 https://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 https://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 https://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 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 typeName nie uwzględnia wielkości liter; false aby określić, że wyszukiwanie jest uwzględniane w wielkości liter.

bindingAttr
BindingFlags

Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName . Jeśli bindingAttr ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora typeName . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora typeName . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć w aktywacji. Jest to zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt. Określa UrlAttribute 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 zostać rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null na Nullable<T> przykład 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 późnego powiązania.

Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.

Typ COM nie został uzyskany za pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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 z ograniczonymi uprawnieniami zabezpieczeń.

Użyj ObjectHandle.Unwrap polecenia , 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 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 typeName nie uwzględnia wielkości liter; false aby określić, że wyszukiwanie jest uwzględniane w wielkości liter.

bindingAttr
BindingFlags

Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName . Jeśli bindingAttr ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora typeName . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora typeName . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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 zostać rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null na Nullable<T> przykład 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 późnego powiązania.

Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.

Typ COM nie został uzyskany za pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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 z ograniczonymi uprawnieniami zabezpieczeń.

Użyj ObjectHandle.Unwrap polecenia , 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
Ź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);
[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

Parametry

assemblyName
String

Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName . Jeśli assemblyName parametr 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 typeName nie uwzględnia wielkości liter; false aby określić, że wyszukiwanie jest uwzględniane w wielkości liter.

bindingAttr
BindingFlags

Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName . Jeśli bindingAttr ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora typeName . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora typeName . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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 zostać rozpasany, aby uzyskać dostęp do nowo utworzonego wystąpienia lub null dla Nullable<T> wystąpień bez wartości.

Atrybuty

Wyjątki

Parametr 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 późnego powiązania.

Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.

Typ COM nie został uzyskany za pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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ą.

W wersjach .NET Core 3.0 i nowszych obciążenia zestawów wyzwalane przez ten interfejs API mają wpływ na bieżącą wartość AssemblyLoadContext.CurrentContextualReflectionContext.

Nuta

Ta metoda może służyć do tworzenia typów niepublicowych 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 niepublicowe i elementy członkowskie jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

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
Ź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 ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora type . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora type . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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

Odwołanie do nowo utworzonego obiektu lub null dla Nullable<T> wystąpień bez wartości.

Wyjątki

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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 późnego powiązania.

Typ COM nie został uzyskany za pośrednictwem 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ślonych atrybutów binder i powiązania.

Nuta

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 niepubliicznych i członków jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)

Źródło:
Activator.cs
Źródło:
Activator.cs
Ź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 ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora type . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora type . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

Zwraca

Odwołanie do nowo utworzonego obiektu lub null dla Nullable<T> wystąpień bez wartości.

Wyjątki

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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 późnego powiązania.

Typ COM nie został uzyskany za pośrednictwem 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ślonych atrybutów binder i powiązania.

Nuta

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 , oraz jeśli zestaw dotacji zestawu, który zawiera typy niepublicowe i elementy członkowskie, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(Type, Object[], Object[])

Źródło:
Activator.cs
Źródło:
Activator.cs
Ź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 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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

Odwołanie do nowo utworzonego obiektu lub null dla Nullable<T> wystąpień bez wartości.

Wyjątki

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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 późnego powiązania.

Typ COM nie został uzyskany za pośrednictwem 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.

Nuta

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 dotacji zestawu, który zawiera typy niepublicowe, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(String, String, Object[])

Źródło:
Activator.RuntimeType.cs
Źródło:
Activator.RuntimeType.cs
Ź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);
[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

Parametry

assemblyName
String

Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName . Jeśli assemblyName parametr to null, przeszukiwany jest wykonywany zestaw.

typeName
String

W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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 zostać rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null na Nullable<T> przykład.

Atrybuty

Wyjątki

Parametr typeName 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 klasy abstrakcyjnej lub ten element członkowski został wywołany z mechanizmem późnego powiązania.

Typ COM nie został uzyskany za pośrednictwem 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

tablica.

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 program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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 activationAttributespliku .

Uwagi

Użyj ObjectHandle.Unwrap polecenia , aby odpakować wartość zwracaną.

W wersjach .NET Core 3.0 i nowszych obciążenia zestawów wyzwalane przez ten interfejs API mają wpływ na bieżącą wartość AssemblyLoadContext.CurrentContextualReflectionContext.

Nuta

Ta metoda może służyć do tworzenia typów niepublikacyjnych, jeśli obiekt wywołujący otrzymał ReflectionPermission flagę ReflectionPermissionFlag.RestrictedMemberAccess , a zestaw dotacji typów niepubliicznych jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

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

Uwaga

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 https://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 https://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 https://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 parametr 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 typeName nie uwzględnia wielkości liter; false aby określić, że wyszukiwanie jest uwzględniane w wielkości liter.

bindingAttr
BindingFlags

Kombinacja flag zero lub więcej bitów, które wpływają na wyszukiwanie konstruktora typeName . Jeśli bindingAttr ma wartość zero, przeprowadzane jest wyszukiwanie konstruktorów publicznych z uwzględnieniem wielkości liter.

binder
Binder

Obiekt, który używa bindingAttr metody i args do wyszukiwania i identyfikowania konstruktora typeName . Jeśli binder parametr 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 żadnych parametrów (konstruktor bez parametrów) jest wywoływany.

culture
CultureInfo

Informacje specyficzne dla kultury, które określają przymus args do typów formalnych zadeklarowanych dla konstruktora typeName . Jeśli culture parametr ma nullwartość , CultureInfo jest używany element dla bieżącego wątku.

activationAttributes
Object[]

Tablica co najmniej jednego atrybutu, który może uczestniczyć 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.

securityInfo
Evidence

Informacje używane do podejmowania decyzji dotyczących zasad zabezpieczeń i udzielania uprawnień do kodu.

Zwraca

Uchwyt, który musi zostać rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null na Nullable<T> przykład bez wartości.

Atrybuty

Wyjątki

Parametr 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 późnego powiązania.

Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.

Typ COM nie został uzyskany za pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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ą.

Nuta

Ta metoda może służyć do tworzenia typów niepublicowych 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 niepublicowe i elementy członkowskie jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(Type, Object[])

Źródło:
Activator.cs
Źródło:
Activator.cs
Ź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 żadnych 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

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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 późnego powiązania.

Typ COM nie został uzyskany za pośrednictwem 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.

Przykłady

Poniższy przykład wywołuje metodę CreateInstance(Type, Object[]) w celu utworzenia String obiektu. Wywołuje konstruktora String.String(Char[], Int32, Int32) , aby utworzyć wystąpienie 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

W poniższym przykładzie tworzona jest tablica postrzępiona, której elementy są argumentami, które mają zostać przekazane do konstruktora String . W tym przykładzie każda tablica jest następnie przekazywana CreateInstance(Type, Object[]) do 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.

Nuta

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 dotacji zestawu, który zawiera typy niepublicowe, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(Type, Boolean)

Źródło:
Activator.RuntimeType.cs
Źródło:
Activator.RuntimeType.cs
Ź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 niepublikowy 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

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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.

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 pośrednictwem 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

Nuta

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 , oraz jeśli zestaw dotacji zestawu, który zawiera typy niepublicowe i elementy członkowskie, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

Dotyczy

CreateInstance(String, String)

Źródło:
Activator.RuntimeType.cs
Źródło:
Activator.RuntimeType.cs
Ź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);
[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

Parametry

assemblyName
String

Nazwa zestawu, w którym poszukiwany jest typ o nazwie typeName . Jeśli assemblyName parametr to null, przeszukiwany jest wykonywany zestaw.

typeName
String

W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.

Zwraca

Uchwyt, który musi zostać rozpasany, aby uzyskać dostęp do nowo utworzonego obiektu lub null na Nullable<T> przykład.

Atrybuty

Wyjątki

Parametr typeName 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 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 pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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) w celu utworzenia Person wystąpienia klasy. Wymaga to odwołania do PersonInfo.dll, które mają zostać dodane 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ływana 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ń z wczesnym powiązaniem z elementami członkowskimi typu. Aby obejść to ograniczenie, w poniższym przykładzie użyto CreateInstance metody wraz z odbiciem w celu przypisania wartości do Person właściwości obiektu Name i wyświetlenia jej wartości.

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 ObjectHandle.Unwrap polecenia , aby odpakować wartość zwracaną.

assemblyName może to być jeden 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 How the Runtime Locates Assemblies (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.

W wersjach .NET Core 3.0 i nowszych obciążenia zestawów wyzwalane przez ten interfejs API mają wpływ na bieżącą wartość AssemblyLoadContext.CurrentContextualReflectionContext.

Nuta

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 zestawu, który zawiera typy niepubliczne, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

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 określający obiekt do utworzenia.

activationCustomData
String[]

Tablica ciągów Unicode, które zawierają niestandardowe dane aktywacji.

Zwraca

Uchwyt, który musi zostać rozpasany, 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
Ź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

Parametr type ma wartość null.

typenie jest .RuntimeType

-lub-

type jest otwartym typem ogólnym (czyli ContainsGenericParameters właściwość zwraca truewartość ).

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.

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 pośrednictwem 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.

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać metodę CreateInstance(Type) . Tworzone są wystąpienia kilku różnych typów, a ich wartości domyślne są wyświetlane.

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.

Nuta

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 dotacji zestawu, który zawiera typy niepublicowe, jest ograniczony do zestawu dotacji obiektu wywołującego lub do jego podzbioru. (Zobacz Zabezpieczenia dotyczące odbicia). Aby korzystać z tej funkcji, aplikacja powinna być docelowa .NET Framework 3.5 lub nowsza.

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 określający obiekt do utworzenia.

Zwraca

Uchwyt, który musi zostać rozpasany, 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 to null, przeszukiwany jest wykonywany zestaw.

typeName
String

W pełni kwalifikowana nazwa typu do utworzenia wystąpienia.

Zwraca

Uchwyt, który musi zostać rozpasany, 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 mechanizmem późnego powiązania.

Konstruktor, który został wywołany przez odbicie, rzucił wyjątek.

Typ COM nie został uzyskany za pośrednictwem 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ż aktualnie załadowana wersja. Należy pamiętać, że program .NET Framework w wersji 2.0, 3.0 i 3.5 używa ś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 z ograniczonymi uprawnieniami zabezpieczeń.

Użyj ObjectHandle.Unwrap polecenia , 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
Ź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>();
public static T CreateInstance<T>() where T : allows ref struct;
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T

Parametry typu

T

Typ do utworzenia.

Zwraca

T

Odwołanie do nowo utworzonego obiektu lub null na Nullable<T> przykład.

Wyjątki

Nie można utworzyć wystąpienia klasy abstrakcyjnej lub określonego typu T nie ma konstruktora bez parametrów.

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() używa CreateInstance<T>() metody ogólnej.

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ć normalnej składni wystąpienia (new operator w języku C#, New w Visual Basic). 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óra przyjmuje listy argumentów, ponieważ przeciążenia nieogólne już zapewniają rozpoznawanie konstruktora powiązanego CreateInstance z opóźnieniem.

Dotyczy