AppDomain.CreateInstanceFrom Método

Definição

Cria uma nova instância de um tipo especificado definido no arquivo de assembly especificado.Creates a new instance of a specified type defined in the specified assembly file.

Sobrecargas

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

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.Creates a new instance of the specified type defined in the specified assembly file.

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

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String, Object[])

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.Creates a new instance of the specified type defined in the specified assembly file.

CreateInstanceFrom(String, String)

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.Creates a new instance of the specified type defined in the specified assembly file.

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

Aviso

Esta API agora é obsoleta.

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.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 https://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

Parâmetros

assemblyFile
String

O nome, inclusive o caminho, de um arquivo que contém um assembly que define o tipo solicitado.The name, including the path, of a file that contains an assembly that defines the requested type. O assembly é carregado usando o método LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String

O nome totalmente qualificado do tipo solicitado, inclusive o namespace, mas não o assembly, como retornado pela propriedade FullName.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean

Um valor booliano especificando se é necessário executar uma pesquisa que diferencie maiúsculas de minúsculas ou não.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags

Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName.A combination of zero or more bit flags that affect the search for the typeName constructor. Caso bindingAttr seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder

Um objeto que permite a associação, a coerção de tipos de argumento, a invocação de membros e a recuperação de objetos MemberInfo por meio da reflexão.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Caso binder seja nulo, o associador padrão é usado.If binder is null, the default binder is used.

args
Object[]

Os argumentos a serem passados para o construtor.The arguments to pass to the constructor. Esta matriz de argumentos deve corresponder em número, ordem e digitar os parâmetros do construtor a ser invocado.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Caso haja preferência pelo construtor sem parâmetros, args precisará ser uma matriz vazia ou nulo.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo

Informações específicas de cultura que controlam a coerção de args para os tipos formais declarados do construtor typeName.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Caso culture seja null, CultureInfo para o thread atual é usado.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Uma matriz de um ou mais atributos que podem participar da ativação.An array of one or more attributes that can participate in activation. Normalmente, uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Esse parâmetro está relacionado a objetos ativados pelo cliente.This parameter is related to client-activated objects. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

securityAttributes
Evidence

Informações usadas para autorizar a criação de typeName.Information used to authorize creation of typeName.

Retornos

Um objeto que é um wrapper para a nova instância ou null caso typeName não seja encontrado.An object that is a wrapper for the new instance, or null if typeName is not found. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Implementações

Atributos

Exceções

assemblyFile é null.assemblyFile is null.

- ou --or- typeName é null.typeName is null.

O chamador não pode fornecer atributos de ativação para um objeto que não seja herdado de MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

- ou --or- securityAttributes não é null.securityAttributes is not null. Quando a política CAS herdada não está habilitada, securityAttributes deve ser null.When legacy CAS policy is not enabled, securityAttributes should be null.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

assemblyFile não foi encontrado.assemblyFile was not found.

typeName não foi encontrado em assemblyFile.typeName was not found in assemblyFile.

Nenhum construtor público correspondente foi encontrado.No matching public constructor was found.

O chamador não tem permissão suficiente para chamar esse construtor.The caller does not have sufficient permission to call this constructor.

assemblyFile não é um assembly válido.assemblyFile is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyFile foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Esta instância é null.This instance is null.

Comentários

Para obter mais informações sobre esse método, consulte o método Activator.CreateInstanceFrom.For more information about this method, see the Activator.CreateInstanceFrom method.

Quando o método CreateInstanceFrom é usado para criar uma instância em um domínio de aplicativo de destino, outro que não seja o domínio de aplicativo do qual a chamada é feita, o assembly é carregado no domínio de aplicativo de destino.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. No entanto, caso a instância seja desencapsulada no domínio do aplicativo de chamada, o uso da instância desencapsulada de determinadas formas pode fazer o assembly ser carregado no domínio do aplicativo de chamada.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. Por exemplo, depois da instância ser desencapsulada, as informações de tipo poderão ser solicitadas, para chamar a associação tardia dos métodos.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Quando o assembly é carregado no domínio de aplicativo de chamada, podem ocorrer exceções.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Caso outra versão do mesmo assembly tenha sido carregada anteriormente no domínio do aplicativo de chamada ou caso o caminho de carregamento do domínio de aplicativo de chamada seja diferente do domínio do aplicativo de destino, exceções como MissingMethodException podem ocorrer.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.

  • Caso o domínio do aplicativo de chamada faça chamadas Early Bound para o tipo de instância, InvalidCastException pode ser lançado quando uma tentativa é feita para converter a instância.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.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

SecurityPermission
para fornecer evidência.to provide evidence. Enumeração associada: ControlEvidence.Associated enumeration: ControlEvidence.

Veja também

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

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.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

Parâmetros

assemblyFile
String

O nome, inclusive o caminho, de um arquivo que contém um assembly que define o tipo solicitado.The name, including the path, of a file that contains an assembly that defines the requested type. O assembly é carregado usando o método LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String

O nome totalmente qualificado do tipo solicitado, inclusive o namespace, mas não o assembly, como retornado pela propriedade FullName.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

ignoreCase
Boolean

Um valor booliano especificando se é necessário executar uma pesquisa que diferencie maiúsculas de minúsculas ou não.A Boolean value specifying whether to perform a case-sensitive search or not.

bindingAttr
BindingFlags

Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName.A combination of zero or more bit flags that affect the search for the typeName constructor. Caso bindingAttr seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.If bindingAttr is zero, a case-sensitive search for public constructors is conducted.

binder
Binder

Um objeto que permite a associação, a coerção de tipos de argumento, a invocação de membros e a recuperação de objetos MemberInfo por meio da reflexão.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Caso binder seja nulo, o associador padrão é usado.If binder is null, the default binder is used.

args
Object[]

Os argumentos a serem passados para o construtor.The arguments to pass to the constructor. Esta matriz de argumentos deve corresponder em número, ordem e digitar os parâmetros do construtor a ser invocado.This array of arguments must match in number, order, and type the parameters of the constructor to invoke. Caso haja preferência pelo construtor sem parâmetros, args precisará ser uma matriz vazia ou nulo.If the parameterless constructor is preferred, args must be an empty array or null.

culture
CultureInfo

Informações específicas de cultura que controlam a coerção de args para os tipos formais declarados do construtor typeName.Culture-specific information that governs the coercion of args to the formal types declared for the typeName constructor. Caso culture seja null, CultureInfo para o thread atual é usado.If culture is null, the CultureInfo for the current thread is used.

activationAttributes
Object[]

Uma matriz de um ou mais atributos que podem participar da ativação.An array of one or more attributes that can participate in activation. Normalmente, uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Esse parâmetro está relacionado a objetos ativados pelo cliente.This parameter is related to client-activated objects. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Retornos

Um objeto que é um wrapper para a nova instância ou null caso typeName não seja encontrado.An object that is a wrapper for the new instance, or null if typeName is not found. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Exceções

assemblyFile é null.assemblyFile is null.

- ou --or- typeName é null.typeName is null.

O chamador não pode fornecer atributos de ativação para um objeto que não seja herdado de MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

assemblyFile não foi encontrado.assemblyFile was not found.

typeName não foi encontrado em assemblyFile.typeName was not found in assemblyFile.

Nenhum construtor público correspondente foi encontrado.No matching public constructor was found.

O chamador não tem permissão suficiente para chamar esse construtor.The caller does not have sufficient permission to call this constructor.

assemblyFile não é um assembly válido.assemblyFile is not a valid assembly.

- ou --or- assemblyFile foi compilado com uma versão posterior do Common Language Runtime do que a versão carregada atualmente.assemblyFile was compiled with a later version of the common language runtime than the version that is currently loaded.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Esta instância é null.This instance is null.

Comentários

Para obter mais informações, consulte o método Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

Quando o método CreateInstanceFrom é usado para criar uma instância em um domínio de aplicativo de destino, outro que não seja o domínio de aplicativo do qual a chamada é feita, o assembly é carregado no domínio de aplicativo de destino.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. No entanto, caso a instância seja desencapsulada no domínio do aplicativo de chamada, o uso da instância desencapsulada de determinadas formas pode fazer o assembly ser carregado no domínio do aplicativo de chamada.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. Por exemplo, depois da instância ser desencapsulada, as informações de tipo poderão ser solicitadas, para chamar a associação tardia dos métodos.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Quando o assembly é carregado no domínio de aplicativo de chamada, podem ocorrer exceções.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Caso outra versão do mesmo assembly tenha sido carregada anteriormente no domínio do aplicativo de chamada ou caso o caminho de carregamento do domínio de aplicativo de chamada seja diferente do domínio do aplicativo de destino, exceções como MissingMethodException podem ocorrer.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.

  • Caso o domínio do aplicativo de chamada faça chamadas Early Bound para o tipo de instância, InvalidCastException pode ser lançado quando uma tentativa é feita para converter a instância.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.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Veja também

CreateInstanceFrom(String, String, Object[])

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.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

Parâmetros

assemblyFile
String

O nome, inclusive o caminho, de um arquivo que contém um assembly que define o tipo solicitado.The name, including the path, of a file that contains an assembly that defines the requested type. O assembly é carregado usando o método LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String

O nome totalmente qualificado do tipo solicitado, inclusive o namespace, mas não o assembly, como retornado pela propriedade FullName.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

activationAttributes
Object[]

Uma matriz de um ou mais atributos que podem participar da ativação.An array of one or more attributes that can participate in activation. Normalmente, uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object.

Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação pelo cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos.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. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Retornos

Um objeto que é um wrapper para a nova instância ou null caso typeName não seja encontrado.An object that is a wrapper for the new instance, or null if typeName is not found. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Implementações

Exceções

assemblyFile é null.assemblyFile is null.

assemblyFile não foi encontrado.assemblyFile was not found.

typeName não foi encontrado em assemblyFile.typeName was not found in assemblyFile.

O chamador não tem permissão suficiente para chamar esse construtor.The caller does not have sufficient permission to call this constructor.

Nenhum construtor público correspondente foi encontrado.No matching public constructor was found.

O chamador não pode fornecer atributos de ativação para um objeto que não seja herdado de MarshalByRefObject.The caller cannot provide activation attributes for an object that does not inherit from MarshalByRefObject.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

assemblyFile não é um assembly válido.assemblyFile is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyFile foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Esta instância é null.This instance is null.

Comentários

O construtor sem parâmetros para typeName é invocado.The parameterless constructor for typeName is invoked.

Para obter mais informações sobre esse método, consulte o método Activator.CreateInstanceFrom.For more information about this method, see the Activator.CreateInstanceFrom method.

Quando o método CreateInstanceFrom é usado para criar uma instância em um domínio de aplicativo de destino, outro que não seja o domínio de aplicativo do qual a chamada é feita, o assembly é carregado no domínio de aplicativo de destino.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. No entanto, caso a instância seja desencapsulada no domínio do aplicativo de chamada, o uso da instância desencapsulada de determinadas formas pode fazer o assembly ser carregado no domínio do aplicativo de chamada.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. Por exemplo, depois da instância ser desencapsulada, as informações de tipo poderão ser solicitadas, para chamar a associação tardia dos métodos.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Quando o assembly é carregado no domínio de aplicativo de chamada, podem ocorrer exceções.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Caso outra versão do mesmo assembly tenha sido carregada anteriormente no domínio do aplicativo de chamada ou caso o caminho de carregamento do domínio de aplicativo de chamada seja diferente do domínio do aplicativo de destino, exceções como MissingMethodException podem ocorrer.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.

  • Caso o domínio do aplicativo de chamada faça chamadas Early Bound para o tipo de instância, InvalidCastException pode ser lançado quando uma tentativa é feita para converter a instância.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.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Veja também

CreateInstanceFrom(String, String)

Cria uma nova instância do tipo especificado definido no arquivo de assembly especificado.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

Parâmetros

assemblyFile
String

O nome, inclusive o caminho, de um arquivo que contém um assembly que define o tipo solicitado.The name, including the path, of a file that contains an assembly that defines the requested type. O assembly é carregado usando o método LoadFrom(String).The assembly is loaded using the LoadFrom(String) method.

typeName
String

O nome totalmente qualificado do tipo solicitado, inclusive o namespace, mas não o assembly, como retornado pela propriedade FullName.The fully qualified name of the requested type, including the namespace but not the assembly, as returned by the FullName property.

Retornos

Um objeto que é um wrapper para a nova instância ou null caso typeName não seja encontrado.An object that is a wrapper for the new instance, or null if typeName is not found. O valor de retorno precisa ser desencapsulado para acessar o objeto real.The return value needs to be unwrapped to access the real object.

Implementações

Exceções

assemblyFile é null.assemblyFile is null.

- ou --or- typeName é null.typeName is null.

assemblyFile não foi encontrado.assemblyFile was not found.

typeName não foi encontrado em assemblyFile.typeName was not found in assemblyFile.

A operação é tentada em um domínio de aplicativo descarregado.The operation is attempted on an unloaded application domain.

Não foi encontrado nenhum construtor público sem parâmetros.No parameterless public constructor was found.

O chamador não tem permissão suficiente para chamar esse construtor.The caller does not have sufficient permission to call this constructor.

assemblyFile não é um assembly válido.assemblyFile is not a valid assembly.

- ou --or- A versão 2,0 ou posterior do Common Language Runtime está carregada e assemblyFile foi compilada com uma versão posterior.Version 2.0 or later of the common language runtime is currently loaded and assemblyFile was compiled with a later version.

Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.An assembly or module was loaded twice with two different evidences.

Esta instância é null.This instance is null.

Exemplos

O exemplo a seguir mostra como usar a sobrecarga do método CreateInstanceFrom(String, String) para criar uma instância de um objeto em um domínio de aplicativo de destino e chamar seus métodos.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.

O exemplo define a classe MarshalableExample, que pode ser empacotada entre limites de domínio do aplicativo.The example defines the MarshalableExample class, which can be marshaled across application domain boundaries. O exemplo cria um caminho para o assembly atualmente em execução, cria um domínio de aplicativo de destino e usa a sobrecarga do método CreateInstanceFrom(String, String) para carregar o assembly de exemplo no domínio do aplicativo de destino e criar uma instância do 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.

Observação

O caminho é absoluto neste exemplo, mas um caminho relativo também funcionaria porque o método Assembly.LoadFrom é usado para carregar o assembly.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.

Depois de desencapsular o identificador de objeto, o exemplo demonstra três maneiras de usar um objeto em um domínio de aplicativo de destino:After unwrapping the object handle, the example demonstrates three ways to use an object in a target application domain:

  • Invocar um método com associação tardia, usando reflexão.Invoking a method with late binding, using reflection. Isso requer informações de tipo, o que faz com que o assembly seja carregado no domínio do aplicativo do chamador.This requires type information, which causes the assembly to be loaded into the application domain of the caller. (Neste exemplo, ele já está carregado.)(In this example, it is already loaded.)

  • Convertendo o objeto em uma interface conhecida pelo chamador e pelo receptor.Casting the object to an interface known to both the caller and the callee. Se a interface for definida no assembly de chamada ou em um terceiro assembly referenciado pelo chamador e pelo receptor, o assembly chamado não será carregado no domínio do aplicativo do chamador.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.

  • Usando o objeto diretamente quando seu tipo é conhecido pelo chamador.Using the object directly when its type is known to the caller. O assembly deve ser carregado no domínio do aplicativo do chamador.The assembly must be loaded into the application domain of the caller.

Outra maneira de evitar o carregamento do assembly chamado no domínio do aplicativo do chamador é que o chamador derive da classe MarshalByRefObject e defina um método que pode ser executado no domínio do aplicativo de destino.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. Esse método pode usar a reflexão para examinar um assembly de destino, pois o assembly de destino já está carregado no domínio do aplicativo de destino.That method can use reflection to examine a target assembly, because the target assembly is already loaded into the target application domain. Consulte o exemplo para a propriedade 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'!

Comentários

O construtor sem parâmetros para typeName é invocado.The parameterless constructor for typeName is invoked.

Para obter mais informações, consulte o método Activator.CreateInstanceFrom.For more information, see the Activator.CreateInstanceFrom method.

Quando o método CreateInstanceFrom é usado para criar uma instância em um domínio de aplicativo de destino, outro que não seja o domínio de aplicativo do qual a chamada é feita, o assembly é carregado no domínio de aplicativo de destino.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. No entanto, caso a instância seja desencapsulada no domínio do aplicativo de chamada, o uso da instância desencapsulada de determinadas formas pode fazer o assembly ser carregado no domínio do aplicativo de chamada.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. Por exemplo, depois da instância ser desencapsulada, as informações de tipo poderão ser solicitadas, para chamar a associação tardia dos métodos.For example, after the instance is unwrapped, its type information might be requested, in order to call its methods late-bound. Quando o assembly é carregado no domínio de aplicativo de chamada, podem ocorrer exceções.When the assembly is loaded into the calling application domain, exceptions can occur.

  • Caso outra versão do mesmo assembly tenha sido carregada anteriormente no domínio do aplicativo de chamada ou caso o caminho de carregamento do domínio de aplicativo de chamada seja diferente do domínio do aplicativo de destino, exceções como MissingMethodException podem ocorrer.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.

  • Caso o domínio do aplicativo de chamada faça chamadas Early Bound para o tipo de instância, InvalidCastException pode ser lançado quando uma tentativa é feita para converter a instância.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.

Segurança

FileIOPermissionAccess
para a capacidade de ler o arquivo que contém o manifesto do assembly.for the ability to read the file containing the assembly manifest. Enumeração associada: ReadAssociated enumeration: Read

WebPermission
para a capacidade de acessar o local do conjunto caso o assembly não seja local.for the ability to access the location of the assembly if the assembly is not local.

Veja também

Aplica-se a