AppDomain.CreateInstanceFrom AppDomain.CreateInstanceFrom AppDomain.CreateInstanceFrom AppDomain.CreateInstanceFrom Method

Определение

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of a specified type defined in the specified assembly file.

Перегрузки

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

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[])

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String) CreateInstanceFrom(String, String) CreateInstanceFrom(String, String) CreateInstanceFrom(String, String)

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

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

Предупреждение

Этот API устарел.

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, 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);
[System.Obsolete("Use an overload that does not take an Evidence parameter")]
[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 CreateInstanceFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, 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);
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle

Параметры

assemblyFile
String String String String

Имя (включая путь) файла, который содержит сборку, определяющую запрошенный тип.The name, including the path, of a file that contains an assembly that defines the requested type. Сборка загружается с помощью метода LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String String String String

Полное имя запрошенного типа, включая пространство имен, но не сборку (см. описание свойства FullName).The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean Boolean Boolean Boolean

Логическое значение, указывающее, следует ли учитывать регистр при поиске.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Сочетание битовых флагов, влияющих на поиск конструктора typeName.A combination of zero or more bit flags that affect the search for the typeName constructor. Если значение параметра bindingAttr равно нулю, проводится поиск открытых конструкторов с учетом регистра.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder Binder Binder Binder

Объект, который допускает привязку, приведение типов аргументов, вызов элементов и извлечение объектов MemberInfo путем отражения.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Если значением параметра binder является null, то используется средство связывания по умолчанию.If binder is null, the default binder is used.

args
Object[]

Аргументы для передачи конструктору.The arguments to pass to the constructor. Массив аргументов должен соответствовать по числу, порядку и типу параметров вызываемому конструктору.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Если предпочтителен конструктор без параметров, то объект args должен быть пустым массивом или значением NULL.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Сведения о языке и региональных параметрах, которые влияют на приведение args к формальным типам, объявленным для конструктора typeName.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Если параметр culture имеет значение null, для текущего потока используется объект CultureInfo.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Массив, состоящий из одного или нескольких атрибутов, которые могут участвовать в активации.An array of one or more attributes that can participate in activation. Обычно это массив, содержащий один объект UrlAttribute, определяющий URL-адрес, необходимый для активации удаленного объекта.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Этот параметр связан с объектами, активируемыми клиентом.This parameter is related to client-activated objects. Активация клиентом — это устаревшая технология, которая сохраняется с целью обеспечения обратной совместимости; ее не рекомендуется использовать для разработки новых приложений.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Сейчас в распределенных приложениях следует использовать Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

securityAttributes
Evidence Evidence Evidence Evidence

Сведения, используемые для авторизации создания typeName.Information used to authorize creation of typeName.

Возвраты

Объект, являющийся оболочкой для нового экземпляра, или значение null, если typeName не найден.An object that is a wrapper for the new instance, or null if typeName is not found. Необходимо распаковать возвращенное значение, чтобы получить доступ к реальному объекту.The return value needs to be unwrapped to access the real object.

Реализации

Исключения

Свойство assemblyFile имеет значение null.assemblyFile is null.

-или--or- Свойство typeName имеет значение null.typeName is null.

Вызывающий объект не может предоставить атрибуты активации для объекта, который не является производным от MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

- или --or- securityAttributes не является null.securityAttributes is not null. Если не включена политика разграничения доступа кода для кода предыдущей версии, securityAttributes должно иметь значение null.When legacy CAS policy is not enabled, securityAttributes should be null.

Предпринята попытка выполнения операции с выгруженным доменом приложения.The operation is attempted on an unloaded application domain.

Не удалось найти assemblyFile.assemblyFile was not found.

typeName не найден в assemblyFile.typeName was not found in assemblyFile.

Соответствующий общий конструктор не найден.No matching public constructor was found.

Вызывающий объект не имеет достаточно разрешений для вызова этого конструктора.The caller does not have sufficient permission to call this constructor.

assemblyFile не является допустимой сборкой.assemblyFile is not a valid assembly.

- или --or- В настоящий момент загружена версия 2.0 среды CLR, а параметр assemblyFile был скомпилирован в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.An assembly or module was loaded twice with two different evidences.

Этот экземпляр имеет значение null.This instance is null.

Комментарии

Дополнительные сведения об этом методе см. в Activator.CreateInstanceFrom описании метода.For more information about this method, see the Activator.CreateInstanceFrom method.

CreateInstanceFrom Если метод используется для создания экземпляра в домене целевого приложения, отличном от домена приложения, из которого выполняется вызов, сборка загружается в целевой домен приложения.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Однако если экземпляр не упакован в вызывающий домен приложения, использование неупакованного экземпляра в определенных случаях может привести к загрузке сборки в домен вызывающего приложения.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Например, после развернутого экземпляра можно запросить сведения о его типе, чтобы вызвать его методы с поздней привязкой.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. При загрузке сборки в домен вызывающего приложения могут возникать исключения.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Если другая версия той же сборки была ранее загружена в домен вызывающего приложения или если путь загрузки вызывающего домена приложения отличается от пути к целевому домену приложения, MissingMethodException могут возникнуть исключения, например.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Если вызывающий домен приложения выполняет вызовы с ранней привязкой к типу экземпляра InvalidCastException , то при попытке приведения экземпляра может возникнуть исключение.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Безопасность

FileIOPermissionAccess
для возможности чтения файла, содержащего манифест сборки.for the ability to read the file containing the assembly manifest. Связанное перечисление:ReadAssociated enumeration: Read

WebPermission
значение для возможности доступа к расположению сборки, если сборка не является локальной.for the ability to access the location of the assembly if the assembly is not local.

SecurityPermission
для предоставления свидетельства.to provide evidence. Связанное перечисление: ControlEvidence.Associated enumeration: ControlEvidence.

Дополнительно

CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

public:
 System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, 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 System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
member this.CreateInstanceFrom : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle

Параметры

assemblyFile
String String String String

Имя (включая путь) файла, который содержит сборку, определяющую запрошенный тип.The name, including the path, of a file that contains an assembly that defines the requested type. Сборка загружается с помощью метода LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String String String String

Полное имя запрошенного типа, включая пространство имен, но не сборку (см. описание свойства FullName).The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean Boolean Boolean Boolean

Логическое значение, указывающее, следует ли учитывать регистр при поиске.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Сочетание битовых флагов, влияющих на поиск конструктора typeName.A combination of zero or more bit flags that affect the search for the typeName constructor. Если значение параметра bindingAttr равно нулю, проводится поиск открытых конструкторов с учетом регистра.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder Binder Binder Binder

Объект, который допускает привязку, приведение типов аргументов, вызов элементов и извлечение объектов MemberInfo путем отражения.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Если значением параметра binder является null, то используется средство связывания по умолчанию.If binder is null, the default binder is used.

args
Object[]

Аргументы для передачи конструктору.The arguments to pass to the constructor. Массив аргументов должен соответствовать по числу, порядку и типу параметров вызываемому конструктору.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Если предпочтителен конструктор без параметров, то объект args должен быть пустым массивом или значением NULL.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Сведения о языке и региональных параметрах, которые влияют на приведение args к формальным типам, объявленным для конструктора typeName.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Если параметр culture имеет значение null, для текущего потока используется объект CultureInfo.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Массив, состоящий из одного или нескольких атрибутов, которые могут участвовать в активации.An array of one or more attributes that can participate in activation. Обычно это массив, содержащий один объект UrlAttribute, определяющий URL-адрес, необходимый для активации удаленного объекта.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Этот параметр связан с объектами, активируемыми клиентом.This parameter is related to client-activated objects. Активация клиентом — это устаревшая технология, которая сохраняется с целью обеспечения обратной совместимости; ее не рекомендуется использовать для разработки новых приложений.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Сейчас в распределенных приложениях следует использовать Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Возвраты

Объект, являющийся оболочкой для нового экземпляра, или значение null, если typeName не найден.An object that is a wrapper for the new instance, or null if typeName is not found. Необходимо распаковать возвращенное значение, чтобы получить доступ к реальному объекту.The return value needs to be unwrapped to access the real object.

Исключения

Свойство assemblyFile имеет значение null.assemblyFile is null.

- или --or- typeNamenull.typeName is null.

Вызывающий объект не может предоставить атрибуты активации для объекта, который не является производным от MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

Предпринята попытка выполнения операции с выгруженным доменом приложения.The operation is attempted on an unloaded application domain.

Не удалось найти assemblyFile.assemblyFile was not found.

typeName не найден в assemblyFile.typeName was not found in assemblyFile.

Соответствующий общий конструктор не найден.No matching public constructor was found.

Вызывающий объект не имеет достаточно разрешений для вызова этого конструктора.The caller does not have sufficient permission to call this constructor.

assemblyFile не является допустимой сборкой.assemblyFile is not a valid assembly.

- или --or- Сборка assemblyFile была скомпилирована в более поздней версии среды CLR, чем версия, загруженная в текущий момент.assemblyFile was compiled with a later version of the common language runtime than the version that is currently loaded.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.An assembly or module was loaded twice with two different evidences.

Этот экземпляр имеет значение null.This instance is null.

Комментарии

Дополнительные сведения см. в описании метода Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

CreateInstanceFrom Если метод используется для создания экземпляра в домене целевого приложения, отличном от домена приложения, из которого выполняется вызов, сборка загружается в целевой домен приложения.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Однако если экземпляр не упакован в вызывающий домен приложения, использование неупакованного экземпляра в определенных случаях может привести к загрузке сборки в домен вызывающего приложения.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Например, после развернутого экземпляра можно запросить сведения о его типе, чтобы вызвать его методы с поздней привязкой.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. При загрузке сборки в домен вызывающего приложения могут возникать исключения.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Если другая версия той же сборки была ранее загружена в домен вызывающего приложения или если путь загрузки вызывающего домена приложения отличается от пути к целевому домену приложения, MissingMethodException могут возникнуть исключения, например.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Если вызывающий домен приложения выполняет вызовы с ранней привязкой к типу экземпляра InvalidCastException , то при попытке приведения экземпляра может возникнуть исключение.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Безопасность

FileIOPermissionAccess
для возможности чтения файла, содержащего манифест сборки.for the ability to read the file containing the assembly manifest. Связанное перечисление:ReadAssociated enumeration: Read

WebPermission
значение для возможности доступа к расположению сборки, если сборка не является локальной.for the ability to access the location of the assembly if the assembly is not local.

Дополнительно

CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[]) CreateInstanceFrom(String, String, Object[])

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName, object[] activationAttributes);
abstract member CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String, activationAttributes As Object()) As ObjectHandle

Параметры

assemblyFile
String String String String

Имя (включая путь) файла, который содержит сборку, определяющую запрошенный тип.The name, including the path, of a file that contains an assembly that defines the requested type. Сборка загружается с помощью метода LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String String String String

Полное имя запрошенного типа, включая пространство имен, но не сборку (см. описание свойства FullName).The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

activationAttributes
Object[]

Массив, состоящий из одного или нескольких атрибутов, которые могут участвовать в активации.An array of one or more attributes that can participate in activation. Обычно это массив, содержащий один объект UrlAttribute, определяющий URL-адрес, необходимый для активации удаленного объекта.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Этот параметр связан с объектами, активируемыми клиентом. Активация клиентом — это устаревшая технология, которая сохраняется с целью обеспечения обратной совместимости; ее не рекомендуется использовать для разработки новых приложений.This parameter is related to client-activated objects.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Сейчас в распределенных приложениях следует использовать Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Возвраты

Объект, являющийся оболочкой для нового экземпляра, или значение null, если typeName не найден.An object that is a wrapper for the new instance, or null if typeName is not found. Необходимо распаковать возвращенное значение, чтобы получить доступ к реальному объекту.The return value needs to be unwrapped to access the real object.

Реализации

Исключения

Свойство assemblyFile имеет значение null.assemblyFile is null.

Файл assemblyFile не найден.assemblyFile was not found.

Не удалось найти typeName в assemblyFile.typeName was not found in assemblyFile.

Вызывающий объект не имеет достаточно разрешений для вызова этого конструктора.The caller does not have sufficient permission to call this constructor.

Соответствующий общий конструктор не найден.No matching public constructor was found.

Вызывающий объект не может предоставить атрибуты активации для объекта, который не является производным от MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

Предпринята попытка выполнения операции с выгруженным доменом приложения.The operation is attempted on an unloaded application domain.

Сборка, определенная параметром assemblyFile, является недопустимой.assemblyFile is not a valid assembly.

- или --or- В настоящий момент загружена версия 2.0 среды CLR, а параметр assemblyFile был скомпилирован в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.An assembly or module was loaded twice with two different evidences.

Этот экземпляр имеет значение null.This instance is null.

Комментарии

Вызывается конструктор без параметров typeName для метода.The parameterless constructor for typeName is invoked.

Дополнительные сведения об этом методе см. в Activator.CreateInstanceFrom описании метода.For more information about this method, see the Activator.CreateInstanceFrom method.

CreateInstanceFrom Если метод используется для создания экземпляра в домене целевого приложения, отличном от домена приложения, из которого выполняется вызов, сборка загружается в целевой домен приложения.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Однако если экземпляр не упакован в вызывающий домен приложения, использование неупакованного экземпляра в определенных случаях может привести к загрузке сборки в домен вызывающего приложения.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Например, после развернутого экземпляра можно запросить сведения о его типе, чтобы вызвать его методы с поздней привязкой.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. При загрузке сборки в домен вызывающего приложения могут возникать исключения.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Если другая версия той же сборки была ранее загружена в домен вызывающего приложения или если путь загрузки вызывающего домена приложения отличается от пути к целевому домену приложения, MissingMethodException могут возникнуть исключения, например.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Если вызывающий домен приложения выполняет вызовы с ранней привязкой к типу экземпляра InvalidCastException , то при попытке приведения экземпляра может возникнуть исключение.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Безопасность

FileIOPermissionAccess
для возможности чтения файла, содержащего манифест сборки.for the ability to read the file containing the assembly manifest. Связанное перечисление:ReadAssociated enumeration: Read

WebPermission
значение для возможности доступа к расположению сборки, если сборка не является локальной.for the ability to access the location of the assembly if the assembly is not local.

Дополнительно

CreateInstanceFrom(String, String) CreateInstanceFrom(String, String) CreateInstanceFrom(String, String) CreateInstanceFrom(String, String)

Создает новый экземпляр заданного типа, определенного в указанном файле сборки.Creates a new instance of the specified type defined in the specified assembly file.

public:
 virtual System::Runtime::Remoting::ObjectHandle ^ CreateInstanceFrom(System::String ^ assemblyFile, System::String ^ typeName);
public System.Runtime.Remoting.ObjectHandle CreateInstanceFrom (string assemblyFile, string typeName);
abstract member CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
override this.CreateInstanceFrom : string * string -> System.Runtime.Remoting.ObjectHandle
Public Function CreateInstanceFrom (assemblyFile As String, typeName As String) As ObjectHandle

Параметры

assemblyFile
String String String String

Имя (включая путь) файла, который содержит сборку, определяющую запрошенный тип.The name, including the path, of a file that contains an assembly that defines the requested type. Сборка загружается с помощью метода LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String String String String

Полное имя запрошенного типа, включая пространство имен, но не сборку (см. описание свойства FullName).The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

Возвраты

Объект, являющийся оболочкой для нового экземпляра, или значение null, если typeName не найден.An object that is a wrapper for the new instance, or null if typeName is not found. Необходимо распаковать возвращенное значение, чтобы получить доступ к реальному объекту.The return value needs to be unwrapped to access the real object.

Реализации

Исключения

Свойство assemblyFile имеет значение null.assemblyFile is null.

- или --or- Свойство typeName имеет значение null.typeName is null.

Файл assemblyFile не найден.assemblyFile was not found.

typeName в сборке assemblyFile не найден.typeName was not found in assemblyFile.

Предпринята попытка выполнения операции с выгруженным доменом приложения.The operation is attempted on an unloaded application domain.

Открытый конструктор без параметров не найден.No parameterless public constructor was found.

Вызывающий код не имеет достаточных разрешений на вызов этого конструктора.The caller does not have sufficient permission to call this constructor.

assemblyFile не является допустимой сборкой.assemblyFile is not a valid assembly.

- или --or- В настоящий момент загружена версия 2.0 среды CLR, а параметр assemblyFile был скомпилирован в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.An assembly or module was loaded twice with two different evidences.

Этот экземпляр имеет значение null.This instance is null.

Примеры

В следующем примере показано, как использовать CreateInstanceFrom(String, String) перегрузку метода для создания экземпляра объекта в целевом домене приложения и вызова его методов.The following example shows how to use the CreateInstanceFrom(String, String) method overload to create an instance of an object in a target application domain and call its methods.

В примере определяется MarshalableExample класс, который можно маршалировать между границами домена приложения.The example defines the MarshalableExample class, which can be marshaled across application domain boundaries. В этом примере выполняется сборка пути к выполняемой в данный момент сборке, создание целевого домена приложения и использование CreateInstanceFrom(String, String) перегрузки метода для загрузки сборки примера в целевой домен приложения и создания MarshalableExampleэкземпляра.The example builds a path to the currently executing assembly, creates a target application domain, and uses the CreateInstanceFrom(String, String) method overload to load the example assembly into the target application domain and create an instance of MarshalableExample.

Примечание

В этом примере путь является абсолютным, но относительный путь также будет работать, Assembly.LoadFrom поскольку метод используется для загрузки сборки.The path is absolute in this example, but a relative path would also work because the Assembly.LoadFrom method is used to load the assembly.

После распаковки маркера объекта в примере демонстрируются три способа использования объекта в целевом домене приложения:After unwrapping the object handle, the example demonstrates three ways to use an object in a target application domain:

  • Вызов метода с поздним связыванием с помощью отражения.Invoking a method with late binding, using reflection. Для этого требуются сведения о типе, что приводит к загрузке сборки в домен приложения вызывающего объекта.This requires type information, which causes the assembly to be loaded into the application domain of the caller. (В этом примере он уже загружен.)(In this example, it is already loaded.)

  • Приведение объекта к интерфейсу, известному как вызывающему, так и вызываемому.Casting the object to an interface known to both the caller and the callee. Если интерфейс определен в вызывающей сборке или в третьей сборке, на которую ссылается вызывающий и вызываемый объект, то вызываемая сборка не загружается в домен приложения вызывающего объекта.If the interface is defined in the calling assembly or in a third assembly referenced by both the caller and the callee, the called assembly is not loaded into the application domain of the caller.

  • Использование объекта непосредственно, если его тип известен вызывающему объекту.Using the object directly when its type is known to the caller. Сборка должна быть загружена в домен приложения вызывающей стороны.The assembly must be loaded into the application domain of the caller.

Другой способ избежать загрузки вызываемой сборки в домен приложения вызывающего объекта заключается в том, чтобы вызывающий объект был производным от MarshalByRefObject класса и был определен метод, который может выполняться в целевом домене приложения.Another way to avoid loading the called assembly into the application domain of the caller is for the caller to derive from the MarshalByRefObject class and to define a method that can be run in the target application domain. Этот метод может использовать отражение для проверки целевой сборки, так как целевая сборка уже загружена в целевой домен приложения.That method can use reflection to examine a target assembly, because the target assembly is already loaded into the target application domain. См. пример для DynamicDirectory свойства.See the example for the DynamicDirectory property.

using namespace System;

public interface class ITest
{
    void Test(String^ greeting);
};

public ref class MarshalableExample : MarshalByRefObject, ITest
{
public:
    virtual void Test(String^ greeting)
    {
        Console::WriteLine("{0} from '{1}'!", greeting,
            AppDomain::CurrentDomain->FriendlyName);
    }
};

void main()
{
    // Construct a path to the current assembly.
    String^ assemblyPath = Environment::CurrentDirectory + "\\" +
        MarshalableExample::typeid->Assembly->GetName()->Name + ".exe";

    AppDomain^ ad = AppDomain::CreateDomain("MyDomain");
 
    System::Runtime::Remoting::ObjectHandle^ oh = 
        ad->CreateInstanceFrom(assemblyPath, "MarshalableExample");

    Object^ obj = oh->Unwrap();


    // Three ways to use the newly created object, depending on how
    // much is known about the type: Late bound, early bound through 
    // a mutually known interface, or early binding of a known type.
    //
    obj->GetType()->InvokeMember("Test", 
        System::Reflection::BindingFlags::InvokeMethod, 
        Type::DefaultBinder, obj, gcnew array<Object^> { "Hello" });

    ITest^ it = (ITest^) obj;
    it->Test("Hi");

    MarshalableExample^ ex = (MarshalableExample^) obj;
    ex->Test("Goodbye");
}

/* This example produces the following output:

Hello from 'MyDomain'!
Hi from 'MyDomain'!
Goodbye from 'MyDomain'!
 */
using System;

public interface ITest
{
    void Test(string greeting);
}

public class MarshalableExample : MarshalByRefObject, ITest
{
    static void Main()
    {
        // Construct a path to the current assembly.
        string assemblyPath = Environment.CurrentDirectory + "\\" +
            typeof(MarshalableExample).Assembly.GetName().Name + ".exe";

        AppDomain ad = AppDomain.CreateDomain("MyDomain");
 
        System.Runtime.Remoting.ObjectHandle oh = 
            ad.CreateInstanceFrom(assemblyPath, "MarshalableExample");

        object obj = oh.Unwrap();


        // Three ways to use the newly created object, depending on how
        // much is known about the type: Late bound, early bound through 
        // a mutually known interface, or early binding of a known type.
        //
        obj.GetType().InvokeMember("Test", 
            System.Reflection.BindingFlags.InvokeMethod, 
            Type.DefaultBinder, obj, new object[] { "Hello" });

        ITest it = (ITest) obj;
        it.Test("Hi");

        MarshalableExample ex = (MarshalableExample) obj;
        ex.Test("Goodbye");
    }

    public void Test(string greeting)
    {
        Console.WriteLine("{0} from '{1}'!", greeting,
            AppDomain.CurrentDomain.FriendlyName);
    }
}

/* This example produces the following output:

Hello from 'MyDomain'!
Hi from 'MyDomain'!
Goodbye from 'MyDomain'!
 */
Public Interface ITest

    Sub Test(ByVal greeting As String)
End Interface

Public Class MarshalableExample 
    Inherits MarshalByRefObject
    Implements ITest

    Shared Sub Main()
    
        ' Construct a path to the current assembly.
        Dim assemblyPath As String = Environment.CurrentDirectory & "\" &
            GetType(MarshalableExample).Assembly.GetName().Name & ".exe"

        Dim ad As AppDomain = AppDomain.CreateDomain("MyDomain")
 
        Dim oh As System.Runtime.Remoting.ObjectHandle = 
            ad.CreateInstanceFrom(assemblyPath, "MarshalableExample")

        Dim obj As Object = oh.Unwrap()


        ' Three ways to use the newly created object, depending on how
        ' much is known about the type: Late bound, early bound through 
        ' a mutually known interface, or early binding of a known type.
        '
        obj.GetType().InvokeMember("Test", 
            System.Reflection.BindingFlags.InvokeMethod, 
            Type.DefaultBinder, obj, New Object() { "Hello" })

        Dim it As ITest = CType(obj, ITest) 
        it.Test("Hi")

        Dim ex As MarshalableExample = CType(obj, MarshalableExample) 
        ex.Test("Goodbye")
    End Sub

    Public Sub Test(ByVal greeting As String) Implements ITest.Test
    
        Console.WriteLine("{0} from '{1}'!", greeting,
            AppDomain.CurrentDomain.FriendlyName)
    End Sub
End Class

' This example produces the following output:
'
'Hello from 'MyDomain'!
'Hi from 'MyDomain'!
'Goodbye from 'MyDomain'!

Комментарии

Вызывается конструктор без параметров typeName для метода.The parameterless constructor for typeName is invoked.

Дополнительные сведения см. в описании метода Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

CreateInstanceFrom Если метод используется для создания экземпляра в домене целевого приложения, отличном от домена приложения, из которого выполняется вызов, сборка загружается в целевой домен приложения.When the CreateInstanceFrom method is used to create an instance in a target application domain, other than the application domain from which the call is made, the assembly is loaded in the target application domain. Однако если экземпляр не упакован в вызывающий домен приложения, использование неупакованного экземпляра в определенных случаях может привести к загрузке сборки в домен вызывающего приложения.However, if the instance is unwrapped in the calling application domain, using the unwrapped instance in certain ways can cause the assembly to be loaded into the calling application domain. Например, после развернутого экземпляра можно запросить сведения о его типе, чтобы вызвать его методы с поздней привязкой.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. При загрузке сборки в домен вызывающего приложения могут возникать исключения.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Если другая версия той же сборки была ранее загружена в домен вызывающего приложения или если путь загрузки вызывающего домена приложения отличается от пути к целевому домену приложения, MissingMethodException могут возникнуть исключения, например.If another version of the same assembly was previously loaded into the calling application domain, or if the load path of the calling application domain is different from that of the target application domain, exceptions such as MissingMethodException can occur.

  • Если вызывающий домен приложения выполняет вызовы с ранней привязкой к типу экземпляра InvalidCastException , то при попытке приведения экземпляра может возникнуть исключение.If the calling application domain makes early-bound calls to the instance type, InvalidCastException can be thrown when an attempt is made to cast the instance.

Безопасность

FileIOPermissionAccess
для возможности чтения файла, содержащего манифест сборки.for the ability to read the file containing the assembly manifest. Связанное перечисление:ReadAssociated enumeration: Read

WebPermission
значение для возможности доступа к расположению сборки, если сборка не является локальной.for the ability to access the location of the assembly if the assembly is not local.

Дополнительно

Применяется к