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
Сведения, используемые для принятия решений согласно политике безопасности и предоставления разрешений для кода.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
- Атрибуты
Исключения
Параметр 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.
Сборка или модуль был загружен дважды с двумя разными свидетельствами.
-или-
Недопустимые имя сборки или кодовая база.
Комментарии
Метод возвращает экземпляры null
Nullable<T> без значения.
Используется 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.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
- Атрибуты
Исключения
Параметр 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 , когда узлу требуется выполнить код в домене приложения с ограниченными разрешениями безопасности.
Метод возвращает null
экземпляры Nullable<T> без значения.
Используется ObjectHandle.Unwrap для распаковки возвращаемого значения.
Применяется к
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор, который наилучшим образом соответствует заданным параметрам.
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.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
Исключения
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 для распаковки возвращаемого значения.
Метод возвращает null
экземпляры Nullable<T> без значения.
Примечание
Начиная с платформа .NET Framework 2.0 этот метод можно использовать для создания неопубликованных типов и членов, если вызывающий объект был предоставлен ReflectionPermission с флагомReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей неопубликованные типы и члены, ограничены набором разрешений вызывающего объекта или его подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework версии 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.
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.
Возвращаемое значение
Ссылка на созданный объект.
Исключения
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
не является допустимым типом.
Комментарии
Вызываемый конструктор должен обеспечить наиболее конкретное совпадение с указанным списком аргументов в ограничениях указанных атрибутов привязки и привязки.
Метод возвращает null
экземпляры Nullable<T> без значения.
Примечание
Начиная с платформа .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающий объект был предоставлен ReflectionPermission с ReflectionPermissionFlag.RestrictedMemberAccess флагом, и если набор разрешений неопубликованных типов и членов ограничен набором разрешений вызывающего объекта или его подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework версии 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.
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.
Возвращаемое значение
Ссылка на созданный объект.
Исключения
type
имеет значение null
.
type
не является объектом типа RuntimeType
.
-или-
Тип type
является открытым универсальным типом (то есть свойство ContainsGenericParameters возвращает true
).
Тип type
не может иметь значение TypeBuilder.
-или- Создание типов TypedReference, ArgIterator, Void и RuntimeArgumentHandle или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, является динамической сборкой, которая была создана с использованием Save.
-или-
Конструктор, который наилучшим образом соответствует args
, имеет аргументы varargs
.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Невозможно создать экземпляр абстрактного класса, или этот элемент был вызван с помощь механизма позднего связывания.
Тип модели COM не был получен с помощью GetTypeFromProgID или GetTypeFromCLSID.
Соответствующий конструктор не найден.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, является недопустимым, или идентифицируемый класс не зарегистрирован.
type
не является допустимым типом.
Комментарии
Вызываемый конструктор должен обеспечить наиболее конкретное совпадение с указанным списком аргументов в ограничениях указанных атрибутов привязки и привязки.
Метод возвращает null
экземпляры Nullable<T> без значения.
Примечание
Начиная с версии платформа .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающему объекту предоставлен ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess флаг, и если набор предоставления сборки, содержащей неопубликованные типы и члены, ограничены набором разрешений вызывающего объекта или его подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework версии 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Object[], Object[])
Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.
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.
Возвращаемое значение
Ссылка на созданный объект.
Исключения
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
не является допустимым типом.
Комментарии
Вызываемый конструктор должен быть доступен и должен обеспечить наиболее конкретное соответствие с указанным списком аргументов.
Метод возвращает null
экземпляры Nullable<T> без значения.
Примечание
Начиная с платформа .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам, если вызывающему объекту предоставлен ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess флаг, и если набор предоставления сборки, содержащей типы, не являющиеся публикацией, ограничен набором разрешений вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework версии 3.5 или более поздней версии.
Применяется к
CreateInstance(String, String, Object[])
Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор без параметров.
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.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
Исключения
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
.
Комментарии
Метод возвращается null
для Nullable<T> экземпляров.
Используется 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
Сведения, используемые для принятия решений согласно политике безопасности и предоставления разрешений для кода.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
- Атрибуты
Исключения
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.
Сборка или модуль был загружен дважды с двумя разными свидетельствами.
-или-
Недопустимые имя сборки или кодовая база.
Комментарии
Метод возвращает null
экземпляры Nullable<T> без значения.
Используется ObjectHandle.Unwrap для распаковки возвращаемого значения.
Примечание
Начиная с платформа .NET Framework 2.0 этот метод можно использовать для создания неопубликованных типов и членов, если вызывающий объект был предоставлен ReflectionPermission с флагомReflectionPermissionFlag.RestrictedMemberAccess, и если набор предоставления сборки, содержащей неопубликованные типы и члены, ограничены набором разрешений вызывающего объекта или его подмножеством. (См. вопросы безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework версии 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Object[])
Создает экземпляр указанного типа, используя конструктор, который наиболее полно соответствует указанным параметрам.
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
, то вызывается конструктор, который не принимает никаких параметров (конструктор без параметров).
Возвращаемое значение
Ссылка на созданный объект.
Исключения
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
Комментарии
Вызываемый конструктор должен быть доступен и должен обеспечить наиболее конкретное соответствие с указанным списком аргументов.
Метод возвращает экземпляры null
Nullable<T> без значения.
Примечание
Начиная с версии платформа .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам, если вызывающему ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess объекту предоставлен флаг, а также если набор предоставления сборки, содержащей типы, не являющиеся публикацией, ограничен набором разрешений вызывающего объекта или его подмножеством. (См. рекомендации по безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(Type, Boolean)
Создает экземпляр указанного типа, используя конструктор этого типа без параметров.
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
, если можно сопоставить только открытый конструктор без параметров.
Возвращаемое значение
Ссылка на созданный объект.
Исключения
type
имеет значение null
.
type
не является объектом типа RuntimeType
.
-или-
Тип type
является открытым универсальным типом (то есть свойство ContainsGenericParameters возвращает true
).
Тип type
не может иметь значение TypeBuilder.
-или- Создание типов TypedReference, ArgIterator, Void и RuntimeArgumentHandle или массивов этих типов не поддерживается.
-или-
Сборка, содержащая type
, является динамической сборкой, которая была создана с использованием Save.
Вызываемый конструктор создает исключение.
Вызывающий объект не имеет разрешения на вызов этого конструктора.
Невозможно создать экземпляр абстрактного класса, или этот элемент был вызван с помощь механизма позднего связывания.
Тип модели COM не был получен с помощью GetTypeFromProgID или GetTypeFromCLSID.
Соответствующий общий конструктор не найден.
type
— это COM-объект, но идентификатор класса, используемый для получения типа, является недопустимым, или идентифицируемый класс не зарегистрирован.
type
не является допустимым типом.
Комментарии
Метод возвращает экземпляры null
Nullable<T> .
Примечание
Начиная с версии платформа .NET Framework 2.0 этот метод можно использовать для доступа к неопубликованным типам и членам, если вызывающему объекту предоставлен ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess флаг, а также если набор предоставления сборки, содержащей типы и члены, ограничены набором разрешений вызывающего объекта или его подмножеством. (См. рекомендации по безопасности для отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.
Применяется к
CreateInstance(String, String)
Создает экземпляр типа с заданным именем, используя для этого именованную сборку и конструктор без параметров.
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
Полное имя типа, экземпляр которого нужно создать.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
Исключения
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 метод вместе с отражением, чтобы назначить значение Person
свойству объекта Name
и отобразить его значение.
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
Комментарии
Метод возвращает экземпляры null
Nullable<T> .
Используется для 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[]
Массив строк в кодировке Юникод, содержащих пользовательские данные активации.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному объекту.
Комментарии
ObjectHandle.Unwrap Используйте метод для распаковки возвращаемого значения.
Контекст активации используется во время активации на основе манифеста для настройки политики домена и предоставления модели безопасности на основе приложений. Класс ActivationContext содержит ApplicationIdentity объект, предоставляющий доступ к манифесту приложения. Дополнительные сведения см. в описании класса ApplicationSecurityManager.
См. также раздел
Применяется к
CreateInstance(Type)
Создает экземпляр указанного типа, используя конструктор этого типа без параметров.
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
Тип объекта для создания.
Возвращаемое значение
Ссылка на созданный объект.
Исключения
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
Комментарии
Вызываемый конструктор должен быть доступен.
Метод возвращается null
для Nullable<T> экземпляров.
Примечание
Начиная с платформа .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
Полное имя типа, экземпляр которого нужно создать.
Возвращаемое значение
Дескриптор, оболочку которого нужно удалить, чтобы получить доступ к вновь созданному экземпляру.
- Атрибуты
Исключения
Параметр 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.
Сборка или модуль был загружен дважды с двумя разными свидетельствами.
-или-
Недопустимые имя сборки или кодовая база.
Комментарии
Метод возвращается null
для Nullable<T> экземпляров.
Используется CreateInstance , когда узлу требуется выполнить код в домене приложения с ограниченными разрешениями безопасности.
Используется ObjectHandle.Unwrap для распаковки возвращаемого значения.
Применяется к
CreateInstance<T>()
Создает экземпляр типа, объявленного в указанном параметре универсального типа, с помощью конструктора без параметров.
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
Создаваемый тип данных.
Возвращаемое значение
- 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 уже обеспечивают разрешение конструктора с поздним связыванием.