Activator.CreateInstance Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
Sobrecargas
| Name | Description |
|---|---|
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Obsoleto.
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) |
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(Type, Object[], Object[]) |
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(String, String, Object[]) |
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros. |
| CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Obsoleto.
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(Type, Object[]) |
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados. |
| CreateInstance(Type, Boolean) |
Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo. |
| CreateInstance(String, String) |
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros. |
| CreateInstance(ActivationContext, String[]) |
Cria uma instância do tipo designado pelo objeto especificado ActivationContext e ativada com os dados personalizados de ativação especificados. |
| CreateInstance(Type) |
Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo. |
| CreateInstance(ActivationContext) |
Cria uma instância do tipo designado pelo objeto especificado ActivationContext . |
| CreateInstance(AppDomain, String, String) |
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor sem parâmetros. |
| CreateInstance<T>() |
Cria uma instância do tipo designado pelo parâmetro genérico especificado, usando o construtor sem parâmetros. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Atenção
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.
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- domain
- AppDomain
O domínio onde o tipo nomeado typeName é criado.
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
- ignoreCase
- Boolean
true para especificar que a pesquisa por typeName não é sensível a maiúsculas minúsculas; false para especificar que a pesquisa é sensível a maiúsculas e maiúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo typeName construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o typeName construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, é usado o CultureInfo para a thread atual.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto. Especifica UrlAttribute o URL necessário para ativar um objeto remoto.
- securityAttributes
- Evidence
Informação usada para tomar decisões sobre políticas de segurança e conceder permissões de código.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
- Atributos
Exceções
domain ou typeName é null.
Não foi encontrado nenhum construtor correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Observações
Use CreateInstance quando um host precisa de executar código num domínio de aplicação que tem permissões de segurança restritas.
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Aplica-se a
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- domain
- AppDomain
O domínio onde o tipo nomeado typeName é criado.
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
- ignoreCase
- Boolean
true para especificar que a pesquisa por typeName não é sensível a maiúsculas minúsculas; false para especificar que a pesquisa é sensível a maiúsculas e maiúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo typeName construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o typeName construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, é usado o CultureInfo para a thread atual.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
- Atributos
Exceções
domain ou typeName é null.
Não foi encontrado nenhum construtor correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Observações
Use CreateInstance quando um host precisa de executar código num domínio de aplicação que tem permissões de segurança restritas.
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Aplica-se a
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, bool ignoreCase, System::Reflection::BindingFlags bindingAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ args, System::Globalization::CultureInfo ^ culture, cli::array <System::Object ^> ^ activationAttributes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
- ignoreCase
- Boolean
true para especificar que a pesquisa por typeName não é sensível a maiúsculas minúsculas; false para especificar que a pesquisa é sensível a maiúsculas e maiúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo typeName construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o typeName construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, é usado o CultureInfo para a thread atual.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
Um handle que deve ser desembrulhado para aceder à instância recém-criada, ou null para Nullable<T> instâncias sem valor.
- Atributos
Exceções
typeName é null.
Não foi encontrado nenhum construtor correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Observações
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Na .NET Core 3.0 e versões posteriores, as cargas de montagem desencadeadas por esta API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.
Note
Este método pode ser usado para criar tipos e membros não públicos se o invocador tiver sido concedido ReflectionPermission com a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão da assembleia que contém os tipos e membros não públicos estiver restrito ao conjunto de concessão do chamante ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo type construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o type construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o type construtor. Se culture for null, é usado o CultureInfo para a thread atual.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
Uma referência ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor correspondente.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Observações
O construtor a invocar deve fornecer a correspondência mais específica com a lista de argumentos especificada sob as restrições dos atributos de binder e binding especificados.
Note
Este método pode ser usado para aceder a tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão dos tipos e membros não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo type construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o type construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o type construtor. Se culture for null, é usado o CultureInfo para a thread atual.
Devoluções
Uma referência ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor correspondente.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Observações
O construtor a invocar deve fornecer a correspondência mais específica com a lista de argumentos especificada sob as restrições dos atributos de binder e binding especificados.
Note
Este método pode ser usado para aceder a tipos e membros não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão da assembleia que contém os tipos e membros não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, Object[], Object[])
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
Uma referência ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor público correspondente.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Observações
O construtor a invocar deve ser acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.
Note
Este método pode ser usado para aceder a tipos não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão do conjunto que contém os tipos não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(String, String, Object[])
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName, cli::array <System::Object ^> ^ activationAttributes);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, activationAttributes As Object()) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias.
- Atributos
Exceções
typeName é null.
Não foi encontrado nenhum construtor público correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
activationAttributes não é um UrlAttribute
matriz.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
O construtor invocado lança uma exceção.
-ou-
Ocorreu um erro ao tentar ativação remota num alvo especificado em activationAttributes.
Observações
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Na .NET Core 3.0 e versões posteriores, as cargas de montagem desencadeadas por esta API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.
Note
Este método pode ser usado para criar tipos não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão dos tipos não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Atenção
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.
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
- ignoreCase
- Boolean
true para especificar que a pesquisa por typeName não é sensível a maiúsculas minúsculas; false para especificar que a pesquisa é sensível a maiúsculas e maiúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais flags de bits que afetam a pesquisa pelo typeName construtor. Se bindingAttr for zero, é realizada uma pesquisa sensível a maiúsculas minúsculas por construtores públicos.
- binder
- Binder
Um objeto que usa, bindingAttrargs procura e identifica o typeName construtor. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
- culture
- CultureInfo
Informação específica da cultura que governa a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, é usado o CultureInfo para a thread atual.
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, trata-se de um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto.
Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
- securityInfo
- Evidence
Informação usada para tomar decisões sobre políticas de segurança e conceder permissões de código.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
- Atributos
Exceções
typeName é null.
Não foi encontrado nenhum construtor correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
activationAttributes não é um array vazio, e o tipo criado não deriva de MarshalByRefObject.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Observações
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Note
Este método pode ser usado para criar tipos e membros não públicos se o invocador tiver sido concedido ReflectionPermission com a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão da assembleia que contém os tipos e membros não públicos estiver restrito ao conjunto de concessão do chamante ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, Object[])
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
- args
- Object[]
Um array de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a invocar. Se args for um array vazio ou null, o construtor que não toma parâmetros (o construtor sem parâmetros) é invocado.
Devoluções
Uma referência ao objeto recém-criado, ou null para Nullable<T> instâncias sem valor.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
-ou-
O construtor que melhor corresponde args tem varargs argumentos.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Nota: Em .NET para aplicações Windows Store ou a Portable Class Library, apanhe a exceção da classe base, MemberAccessException, em vez disso.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor público correspondente.
Nota: Em .NET para aplicações Windows Store ou a Portable Class Library, apanhe a exceção da classe base, MissingMemberException, em vez disso.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Exemplos
O exemplo seguinte chama o CreateInstance(Type, Object[]) método para criar um String objeto. Chama o String.String(Char[], Int32, Int32) construtor para instanciar uma cadeia que contém dez elementos de um array de caracteres começando na décima quarta posição.
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
O exemplo seguinte cria um array irregular cujos elementos são argumentos a serem passados a um String construtor. O exemplo passa então cada array ao CreateInstance(Type, Object[]) método para invocar o construtor de strings apropriado.
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
Observações
O construtor a invocar deve ser acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.
Note
Este método pode ser usado para aceder a tipos não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão do conjunto que contém os tipos não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, Boolean)
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
- nonPublic
- Boolean
true se um construtor público ou não público sem parâmetros conseguir corresponder; false se apenas um construtor público sem parâmetros puder corresponder.
Devoluções
Uma referência ao objeto recém-criado, ou null por Nullable<T> exemplos.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor público correspondente.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Observações
Note
Este método pode ser usado para aceder a tipos e membros não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão da assembleia que contém os tipos e membros não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(String, String)
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo cujo nome é especificado, usando o conjunto nomeado e o construtor sem parâmetros.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias.
- Atributos
Exceções
typeName é null.
Não foi encontrado nenhum construtor público correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não se pode criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Exemplos
O exemplo seguinte define uma classe nomeada Person numa assembleia chamada PersonInfo. Note que a Person classe tem dois construtores, um dos quais é sem parâmetros.
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
O exemplo seguinte chama o CreateInstance(String, String) método para instanciar a Person classe. É necessário adicionar uma referência a PersonInfo.dll ao projeto. Como o CreateInstance(String, String) método chama o Person construtor sem parâmetro de classe, o exemplo atribui um valor à sua Name propriedade.
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
No entanto, CreateInstance é frequentemente chamado para instanciar um tipo que atravessa os limites da máquina ou que não é conhecido no momento do projeto. Neste caso, não pode incluir uma referência ao assembly no projeto nem fazer chamadas antecipadas para os membros do tipo. Para contornar esta limitação, o exemplo seguinte utiliza o CreateInstance método juntamente com a reflexão para atribuir um valor à Person propriedade do Name objeto e mostrar o seu valor.
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
Observações
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
assemblyName pode ser um dos seguintes:
O nome simples de um assembly, sem o seu caminho ou extensão de ficheiro. Por exemplo, especificaria
TypeExtensionspara uma assembleia cujo caminho e nome sejam .\bin\TypeExtensions.dll.O nome completo de uma assembleia assinada, que consiste no seu nome simples, versão, cultura e token de chave pública; por exemplo, "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".
Para mais informações sobre como o runtime da linguagem comum identifica e carrega assemblies, veja Como o Runtime Localiza Assemblies. Para informações sobre como usar o ficheiro de configuração da aplicação para definir localizações de montagem, veja Especificar a Localização de uma Assembleia. Se assemblyName for encontrado, é carregado no contexto predefinido.
Na .NET Core 3.0 e versões posteriores, as cargas de montagem desencadeadas por esta API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.
Note
Este método pode ser usado para criar tipos não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão da assembleia que contém os tipos não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(ActivationContext, String[])
Cria uma instância do tipo designado pelo objeto especificado ActivationContext e ativada com os dados personalizados de ativação especificados.
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
Parâmetros
- activationContext
- ActivationContext
Um objeto de contexto de ativação que especifica o objeto a criar.
- activationCustomData
- String[]
Um array de cadeias Unicode que contêm dados de ativação personalizados.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias.
Observações
Use o ObjectHandle.Unwrap método para desembrulhar o valor de retorno.
O contexto de ativação é utilizado durante a ativação baseada em manifestos para configurar a política de domínio e fornecer um modelo de segurança baseado em aplicações. A ActivationContext classe contém um ApplicationIdentity objeto que fornece acesso ao manifesto da aplicação. Para obter mais informações, consulte a classe ApplicationSecurityManager.
Ver também
Aplica-se a
CreateInstance(Type)
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
Cria uma instância do tipo especificado usando o construtor sem parâmetros desse tipo.
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
Parâmetros
- type
- Type
O tipo de objeto a criar.
Devoluções
Uma referência ao objeto recém-criado, ou null por Nullable<T> exemplos.
Exceções
type é null.
type não é um RuntimeType.
-ou-
type é um tipo genérico aberto (isto é, a ContainsGenericParameters propriedade devolve true).
type não pode ser um TypeBuilder.
-ou-
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
-ou-
A assembly que contém type é uma assembly dinâmica que foi criada com Save.
O construtor chamado lança uma exceção.
O chamador não tem permissão para chamar este construtor.
Nota: Em .NET para aplicações Windows Store ou a Portable Class Library, apanhe a exceção da classe base, MemberAccessException, em vez disso.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de ligação tardia.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
Não foi encontrado nenhum construtor público correspondente.
Nota: Em .NET para aplicações Windows Store ou a Portable Class Library, apanhe a exceção da classe base, MissingMemberException, em vez disso.
type é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não está registada.
type não é um tipo válido.
Exemplos
O seguinte exemplo de código demonstra como chamar o CreateInstance(Type) método. São criadas instâncias de vários tipos diferentes e os seus valores predefinidos são exibidos.
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
Observações
O construtor a invocar deve ser acessível.
Note
Este método pode ser usado para aceder a tipos não públicos se o chamador tiver recebido ReflectionPermission a ReflectionPermissionFlag.RestrictedMemberAccess bandeira e se o conjunto de concessão do conjunto que contém os tipos não públicos estiver restrito ao conjunto de concessão do chamador ou a um subconjunto destes. (Ver Considerações de Segurança para Reflexão.) Para usar esta funcionalidade, a sua aplicação deve direcionar-se para o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(ActivationContext)
Cria uma instância do tipo designado pelo objeto especificado 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
Parâmetros
- activationContext
- ActivationContext
Um objeto de contexto de ativação que especifica o objeto a criar.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias.
Observações
Use o ObjectHandle.Unwrap método para desembrulhar o valor de retorno.
O contexto de ativação é utilizado durante a ativação baseada em manifestos para configurar a política de domínio e fornecer um modelo de segurança baseado em aplicações. A ActivationContext classe contém um ApplicationIdentity objeto que fornece acesso ao manifesto da aplicação. Para obter mais informações, consulte a classe ApplicationSecurityManager.
Ver também
Aplica-se a
CreateInstance(AppDomain, String, String)
Cria uma instância do tipo cujo nome é especificado no domínio remoto especificado, usando o assembly nomeado e o construtor sem parâmetros.
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
Parâmetros
- domain
- AppDomain
O domínio remoto onde o tipo nomeado typeName é criado.
- assemblyName
- String
O nome da assembleia onde se procura o tipo nomeado typeName . Se assemblyName for null, o conjunto executante é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo para criar uma instância de.
Devoluções
Um handle que deve ser desdobrado para aceder ao objeto recém-criado, ou null para Nullable<T> instâncias.
- Atributos
Exceções
typeName ou domain é null.
Não foi encontrado nenhum construtor público correspondente.
typeName não foi encontrado em assemblyName.
assemblyName não foi encontrado.
O chamador não tem permissão para chamar este construtor.
Não é possível criar uma instância de tipo abstrato.
-ou-
Este elemento foi invocado com um mecanismo de ligação tardia.
O construtor, que foi invocado através da reflexão, lançou uma exceção.
O tipo COM não foi obtido através GetTypeFromProgID de ou GetTypeFromCLSID.
A criação de TypedReference, ArgIterator, Void, e RuntimeArgumentHandle tipos, ou arrays desses tipos, não é suportada.
assemblyName não é uma assembleia válida.
-ou-
A versão 2.0 ou posterior do common language runtime (CLR) está atualmente carregada e assemblyName foi compilada para uma versão do CLR posterior à versão atualmente carregada. Note que as versões 2.0, 3.0 e 3.5 do .NET Framework usam todas a versão 2.0 do CLR.
Um conjunto ou módulo foi carregado duas vezes com duas evidências diferentes.
-ou-
O nome da assembleia ou base de código é inválido.
Observações
Use CreateInstance quando um host precisa de executar código num domínio de aplicação que tem permissões de segurança restritas.
Use ObjectHandle.Unwrap para desembrulhar o valor de retorno.
Aplica-se a
CreateInstance<T>()
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo designado pelo parâmetro genérico especificado, usando o construtor sem parâmetros.
public:
generic <typename T>
static T CreateInstance();
public static T CreateInstance<T>();
public static T CreateInstance<T>() where T : allows ref struct;
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T
Parâmetros de Tipo Genérico
- T
Do tipo para criar.
Devoluções
Uma referência ao objeto recém-criado, ou null por Nullable<T> exemplos.
Exceções
Não pode criar uma instância de uma classe abstrata, ou o tipo especificado T para não tem um construtor sem parâmetros.
Nota: Em .NET para aplicações Windows Store ou a Portable Class Library, apanhe a exceção da classe base, MissingMemberException, em vez disso.
Observações
O CreateInstance<T>() método genérico é usado pelos compiladores para implementar a instanciação de tipos especificados por parâmetros de tipo. Por exemplo, no método genérico seguinte, a implementação de new T() utiliza o CreateInstance<T>() método genérico.
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
Em geral, não há utilidade para o CreateInstance<T>() método genérico no código de aplicação, pois o tipo deve ser conhecido em tempo de compilação. Se o tipo for conhecido em tempo de compilação, pode ser usada a sintaxe normal de instanciação (operador new em C#, New em Visual Basic). Se o tipo não for conhecido em tempo de compilação, pode chamar uma sobrecarga não genérica de CreateInstance.
Não existem sobrecargas do CreateInstance<T>() método genérico que aceitam listas de argumentos, porque as sobrecargas não genéricas de CreateInstance já fornecem resolução de construtores com ligações tardias.