Activator.CreateInstance Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам.
Перегрузки
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр типа, имя которого указано, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
CreateInstance(Type, Object[], Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
CreateInstance(String, String, Object[]) |
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Устаревшие..
Создает экземпляр типа, имя которого указано, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам. |
CreateInstance(Type, Object[]) |
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам. |
CreateInstance(Type, Boolean) |
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа. |
CreateInstance(String, String) |
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров. |
CreateInstance(ActivationContext, String[]) |
Создает экземпляр типа, который обозначается указанным объектом ActivationContext и активируется с указанными пользовательскими данными активации. |
CreateInstance(Type) |
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа. |
CreateInstance(ActivationContext) |
Создает экземпляр типа, указанного указанным объектом ActivationContext. |
CreateInstance(AppDomain, String, String) |
Создает экземпляр типа, имя которого указано в указанном удаленном домене, с помощью именованного сборки и конструктора без параметров. |
CreateInstance<T>() |
Создает экземпляр типа, указанного указанным параметром универсального типа, с помощью конструктора без параметров. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Внимание!
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(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
Параметры
- domain
- AppDomain
Домен, в котором создается тип с именем typeName
.
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
- ignoreCase
- Boolean
true
, чтобы указать, что поиск typeName
не учитывает регистр; false
, чтобы указать, что поиск учитывает регистр.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора typeName
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора typeName
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора typeName
. Если culture
null
, используется CultureInfo для текущего потока.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute. UrlAttribute указывает URL-адрес, необходимый для активации удаленного объекта.
- securityAttributes
- Evidence
Сведения, используемые для принятия решений политики безопасности и предоставления разрешений на код.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для экземпляров Nullable<T> без значения.
- Атрибуты
Исключения
domain
или typeName
null
.
Не найден соответствующий конструктор.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Комментарии
Используйте CreateInstance, если узел должен выполнять код в домене приложения с ограниченными разрешениями безопасности.
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Применяется к
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Создает экземпляр типа, имя которого указано в указанном удаленном домене, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам.
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
Параметры
- domain
- AppDomain
Домен, в котором создается тип с именем typeName
.
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
- ignoreCase
- Boolean
true
, чтобы указать, что поиск typeName
не учитывает регистр; false
, чтобы указать, что поиск учитывает регистр.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора typeName
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора typeName
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора typeName
. Если culture
null
, используется CultureInfo для текущего потока.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для экземпляров Nullable<T> без значения.
- Атрибуты
Исключения
domain
или typeName
null
.
Не найден соответствующий конструктор.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Комментарии
Используйте CreateInstance, если узел должен выполнять код в домене приложения с ограниченными разрешениями безопасности.
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Применяется к
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр типа, имя которого указано, используя именованную сборку и конструктор, который лучше всего соответствует указанным параметрам.
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
Параметры
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
- ignoreCase
- Boolean
true
, чтобы указать, что поиск typeName
не учитывает регистр; false
, чтобы указать, что поиск учитывает регистр.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора typeName
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора typeName
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора typeName
. Если culture
null
, используется CultureInfo для текущего потока.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному экземпляру или null
для Nullable<T> экземпляров без значения.
Исключения
typeName
null
.
Не найден соответствующий конструктор.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Комментарии
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для создания неопубликованных типов и членов, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления сборки, содержащей типы и члены неопубликованного типа, ограничены набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам.
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
Параметры
- type
- Type
Тип создаваемого объекта.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора type
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора type
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора type
. Если culture
null
, используется CultureInfo для текущего потока.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров без значения.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найден соответствующий конструктор.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Комментарии
Вызываемый конструктор должен обеспечить наиболее конкретное совпадение с указанным списком аргументов в ограничениях указанных атрибутов привязки и привязки.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления типов и членов неопубликованного набора ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам.
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
Параметры
- type
- Type
Тип создаваемого объекта.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора type
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора type
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора type
. Если culture
null
, используется CultureInfo для текущего потока.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров без значения.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найден соответствующий конструктор.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Комментарии
Вызываемый конструктор должен обеспечить наиболее конкретное совпадение с указанным списком аргументов в ограничениях указанных атрибутов привязки и привязки.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления сборки, содержащей типы и члены, ограничены набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Object[], Object[])
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам.
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
Параметры
- type
- Type
Тип создаваемого объекта.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров без значения.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найдено соответствующего общедоступного конструктора.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Комментарии
Вызываемый конструктор должен быть доступен и должен обеспечить наиболее конкретное совпадение с указанным списком аргументов.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей типы неопубликованных, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(String, String, Object[])
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров.
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
Параметры
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для Nullable<T> экземпляров.
Исключения
typeName
null
.
Не найдено соответствующего общедоступного конструктора.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
activationAttributes
не является UrlAttribute
массив.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Вызываемый конструктор создает исключение.
-или-
Ошибка при попытке удаленной активации в целевом объекте, указанном в activationAttributes
.
Комментарии
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Заметка
Начиная с .NET Framework 2.0, этот метод можно использовать для создания неопубликованных типов, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления типов неопубликованного объекта ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Внимание!
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(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
Параметры
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
- ignoreCase
- Boolean
true
, чтобы указать, что поиск typeName
не учитывает регистр; false
, чтобы указать, что поиск учитывает регистр.
- bindingAttr
- BindingFlags
Сочетание нулевых или более битовых флагов, влияющих на поиск конструктора typeName
. Если bindingAttr
равно нулю, выполняется поиск с учетом регистра для общедоступных конструкторов.
- binder
- Binder
Объект, использующий bindingAttr
и args
для поиска и идентификации конструктора typeName
. Если binder
null
, используется привязка по умолчанию.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
- culture
- CultureInfo
Сведения, относящиеся к языку и региональным параметрам, которые управляют приведением args
к формальным типам, объявленным для конструктора typeName
. Если culture
null
, используется CultureInfo для текущего потока.
- activationAttributes
- Object[]
Массив одного или нескольких атрибутов, которые могут участвовать в активации. Обычно это массив, содержащий один объект UrlAttribute, указывающий URL-адрес, необходимый для активации удаленного объекта.
Этот параметр связан с объектами, активированными клиентом. Активация клиента — это устаревшая технология, которая сохраняется для обратной совместимости, но не рекомендуется для новой разработки. Распределенные приложения должны использовать Windows Communication Foundation.
- securityInfo
- Evidence
Сведения, используемые для принятия решений политики безопасности и предоставления разрешений на код.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для экземпляров Nullable<T> без значения.
- Атрибуты
Исключения
typeName
null
.
Не найден соответствующий конструктор.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
activationAttributes
не является пустым массивом, а созданный тип не является производным от MarshalByRefObject.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Комментарии
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для создания неопубликованных типов и членов, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления сборки, содержащей типы и члены неопубликованного типа, ограничены набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Object[])
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
Создает экземпляр указанного типа с помощью конструктора, который лучше всего соответствует указанным параметрам.
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
Параметры
- type
- Type
Тип создаваемого объекта.
- args
- Object[]
Массив аргументов, соответствующих числу, порядку и типу параметров вызываемого конструктора. Если args
является пустым массивом или null
, конструктор, который не принимает параметров (конструктор без параметров) вызывается.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров без значения.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
-или-
Конструктор, который лучше всего соответствует args
, имеет varargs
аргументы.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Примечание. В .NET для приложений Магазина Windows или переносимой библиотеки классов, перехватите исключение базового класса MemberAccessException.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найдено соответствующего общедоступного конструктора.
Примечание. В .NET для приложений Магазина Windows или переносимой библиотеки классов, перехватите исключение базового класса MissingMemberException.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Примеры
В следующем примере вызывается метод CreateInstance(Type, Object[]) для создания объекта String. Он вызывает конструктор String.String(Char[], Int32, Int32) для создания экземпляра строки, содержащей десять элементов из массива символов, начиная с четырнадцатой позиции.
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
В следующем примере создается массив, элементы которого являются аргументами, передаваемыми в конструктор String. Затем в этом примере каждый массив передается методу CreateInstance(Type, Object[]) для вызова соответствующего конструктора строк.
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
Комментарии
Вызываемый конструктор должен быть доступен и должен обеспечить наиболее конкретное совпадение с указанным списком аргументов.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей типы неопубликованных, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Boolean)
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа.
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
Параметры
- type
- Type
Тип создаваемого объекта.
- nonPublic
- Boolean
true
, если открытый или неопубликованный конструктор без параметров может соответствовать; false
, если может соответствовать только открытый конструктор без параметров.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найдено соответствующего общедоступного конструктора.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Комментарии
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess и если набор предоставления сборки, содержащей типы и члены, ограничены набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(String, String)
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр типа, имя которого указано с помощью именованной сборки и конструктора без параметров.
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
Параметры
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для Nullable<T> экземпляров.
Исключения
typeName
null
.
Не найдено соответствующего общедоступного конструктора.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Невозможно создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Примеры
В следующем примере определяется класс с именем Person
в сборке с именем PersonInfo
. Обратите внимание, что класс Person
имеет два конструктора, один из которых является параметрным.
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
В следующем примере вызывается метод CreateInstance(String, String) для создания экземпляра класса Person
. Для этого требуется ссылка на PersonInfo.dll добавить в проект. Так как метод CreateInstance(String, String) вызывает конструктор без параметров класса Person
, в примере присваивается значение свойству Name
.
using System;
using System.Runtime.Remoting;
public class Example
{
public static void Main()
{
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
Person p = (Person) handle.Unwrap();
p.Name = "Samuel";
Console.WriteLine(p);
}
}
// The example displays the following output:
// Samuel
open System
let handle = Activator.CreateInstance("PersonInfo", "Person")
let p = handle.Unwrap() :?> Person
p.Name <- "Samuel"
printfn $"{p}"
// The example displays the following output:
// Samuel
Imports System.Runtime.Remoting
Module Example
Public Sub Main()
Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
Dim p As Person = CType(handle.Unwrap(), Person)
p.Name = "Samuel"
Console.WriteLine(p)
End Sub
End Module
' The example displays the following output:
' Samuel
Однако CreateInstance часто вызывается для создания экземпляра типа, пересекающего границы компьютера или не известного во время разработки. В этом случае нельзя включить ссылку на сборку в проекте и не удается выполнить вызовы с ранними привязками к членам типа. Для обхода этого ограничения в следующем примере используется метод CreateInstance вместе с отражением, чтобы назначить значение свойству Name
объекта Person
и отобразить его значение.
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
Комментарии
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
assemblyName
может быть следующим:
Простое имя сборки без его пути или расширения файла. Например, можно указать
TypeExtensions
для сборки, путь к которой и имя.\bin\TypeExtensions.dll.Полное имя подписанной сборки, которая состоит из его простого имени, версии, языка и региональных параметров и маркера открытого ключа; Например, "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".
Дополнительные сведения о том, как среда CLR идентифицирует и загружает сборки, см. в статье Как среда выполнения находит сборки. Сведения об использовании файла конфигурации приложения для определения расположений сборок см. в разделе Указание расположения сборки. Если assemblyName
найден, он загружается в контексте по умолчанию.
Заметка
Начиная с .NET Framework 2.0, этот метод можно использовать для создания неопубликованных типов, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей типы неопубликованных, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(ActivationContext, String[])
Создает экземпляр типа, который обозначается указанным объектом ActivationContext и активируется с указанными пользовательскими данными активации.
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
Параметры
- activationContext
- ActivationContext
Объект контекста активации, указывающий создаваемый объект.
- activationCustomData
- String[]
Массив строк Юникода, содержащих пользовательские данные активации.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для Nullable<T> экземпляров.
Комментарии
Используйте метод ObjectHandle.Unwrap для распаковки возвращаемого значения.
Контекст активации используется во время активации на основе манифеста для настройки политики домена и предоставления модели безопасности на основе приложений. Класс ActivationContext содержит объект ApplicationIdentity, предоставляющий доступ к манифесту приложения. Дополнительные сведения см. в ApplicationSecurityManager классе.
См. также раздел
Применяется к
CreateInstance(Type)
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
- Исходный код:
- Activator.cs
Создает экземпляр указанного типа с помощью конструктора без параметров этого типа.
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
Параметры
- type
- Type
Тип создаваемого объекта.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров.
Исключения
type
null
.
type
не является RuntimeType
.
-или-
type
— это открытый универсальный тип (то есть свойство ContainsGenericParameters возвращает true
).
type
не может быть TypeBuilder.
-или-
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, представляет собой динамическую сборку, созданную с помощью Save.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Примечание. В .NET для приложений Магазина Windows или переносимой библиотеки классов, перехватите исключение базового класса MemberAccessException.
Не удается создать экземпляр абстрактного класса или этот член был вызван с помощью механизма последней привязки.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Не найдено соответствующего общедоступного конструктора.
Примечание. В .NET для приложений Магазина Windows или переносимой библиотеки классов, перехватите исключение базового класса MissingMemberException.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, недопустим, или указанный класс не зарегистрирован.
type
недопустимый тип.
Примеры
В следующем примере кода показано, как вызвать метод CreateInstance(Type). Создаются экземпляры нескольких различных типов и отображаются значения по умолчанию.
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
Комментарии
Вызываемый конструктор должен быть доступен.
Заметка
Начиная с .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам, если вызывающий объект был предоставлен ReflectionPermission с флагом ReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей типы неопубликованных, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(ActivationContext)
Создает экземпляр типа, указанного указанным объектом ActivationContext.
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
Параметры
- activationContext
- ActivationContext
Объект контекста активации, указывающий создаваемый объект.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для Nullable<T> экземпляров.
Комментарии
Используйте метод ObjectHandle.Unwrap для распаковки возвращаемого значения.
Контекст активации используется во время активации на основе манифеста для настройки политики домена и предоставления модели безопасности на основе приложений. Класс ActivationContext содержит объект ApplicationIdentity, предоставляющий доступ к манифесту приложения. Дополнительные сведения см. в ApplicationSecurityManager классе.
См. также раздел
Применяется к
CreateInstance(AppDomain, String, String)
Создает экземпляр типа, имя которого указано в указанном удаленном домене, с помощью именованного сборки и конструктора без параметров.
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
Параметры
- domain
- AppDomain
Удаленный домен, в котором создается тип с именем typeName
.
- assemblyName
- String
Имя сборки, в которой выполняется поиск типа с именем typeName
. Если assemblyName
null
, выполняется поиск сборки.
- typeName
- String
Полное имя типа для создания экземпляра.
Возвращаемое значение
Дескриптор, который должен быть раскрыт для доступа к только что созданному объекту или null
для Nullable<T> экземпляров.
- Атрибуты
Исключения
typeName
или domain
null
.
Не найдено соответствующего общедоступного конструктора.
typeName
не найден в assemblyName
.
assemblyName
не найден.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Не удается создать экземпляр абстрактного типа.
-или-
Этот элемент был вызван с помощью механизма последней привязки.
Конструктор, который был вызван с помощью отражения, вызвал исключение.
Тип COM не был получен через GetTypeFromProgID или GetTypeFromCLSID.
Создание TypedReference, ArgIterator, Voidи RuntimeArgumentHandle типов или массивов этих типов не поддерживается.
assemblyName
не является допустимой сборкой.
-или-
Среда CLR версии 2.0 или более поздняя в настоящее время загружается и assemblyName
была скомпилирована для версии среды CLR, которая позже, чем текущая загруженная версия. Обратите внимание, что платформы .NET Framework версии 2.0, 3.0 и 3.5 используют среду CLR версии 2.0.
Сборка или модуль была загружена дважды с двумя разными доказательствами.
-или-
Недопустимое имя сборки или база кода.
Комментарии
Используйте CreateInstance, если узел должен выполнять код в домене приложения с ограниченными разрешениями безопасности.
Используйте ObjectHandle.Unwrap для распаковки возвращаемого значения.
Применяется к
CreateInstance<T>()
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
- Исходный код:
- Activator.RuntimeType.cs
Создает экземпляр типа, указанного указанным параметром универсального типа, с помощью конструктора без параметров.
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
Параметры типа
- T
Тип для создания.
Возвращаемое значение
Ссылка на только что созданный объект или null
для Nullable<T> экземпляров.
Исключения
Не удается создать экземпляр абстрактного класса или тип, указанный для T
, не имеет конструктора без параметров.
Примечание. В .NET для приложений Магазина Windows или переносимой библиотеки классов, перехватите исключение базового класса MissingMemberException.
Комментарии
Универсальный метод CreateInstance<T>() используется компиляторами для реализации экземпляра типов, указанных параметрами типа. Например, в следующем универсальном методе реализация new T()
(gcnew T()
в C++) использует универсальный метод CreateInstance<T>().
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
Как правило, в коде приложения не используется универсальный метод CreateInstance<T>(), так как тип должен быть известен во время компиляции. Если тип известен во время компиляции, можно использовать обычный синтаксис экземпляра (операторnew
в C#, New
в Visual Basic, gcnew
в C++). Если тип не известен во время компиляции, можно вызвать не универсальную перегрузку CreateInstance.
Нет перегрузки CreateInstance<T>() универсального метода, который принимает списки аргументов, так как не универсальные перегрузки CreateInstance уже предоставляют разрешение конструктора с поздней привязкой.