Activator.CreateInstance Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.
Sobrecargas
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 corresponda melhor 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 corresponda melhor aos parâmetros especificados. |
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Cria uma instância do tipo cujo nome é especificado, usando o assembly 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 assembly 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 assembly 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 do tipo. |
CreateInstance(String, String) |
Cria uma instância do tipo cujo nome é especificado, usando o assembly nomeado e o construtor sem parâmetros. |
CreateInstance(ActivationContext, String[]) |
Cria uma instância do tipo que é designada pelo objeto ActivationContext especificado e ativada com os dados de ativação personalizados especificados. |
CreateInstance(Type) |
Cria uma instância do tipo especificado usando o construtor sem parâmetros do tipo. |
CreateInstance(ActivationContext) |
Cria uma instância do tipo designado pelo objeto ActivationContext especificado. |
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 de tipo genérico especificado, usando o construtor sem parâmetros. |
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Cuidado
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 corresponda melhor 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 remoto no qual o tipo chamado typeName
foi criado.
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
- ignoreCase
- Boolean
true
para especificar que a pesquisa de typeName
não diferencia maiúsculas de minúsculas; false
para especificar que a pesquisa diferencia maiúsculas de minúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor typeName
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor typeName
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Ela costuma ser uma matriz contendo um único objeto UrlAttribute. O UrlAttribute especifica a URL necessária para ativar um objeto remoto.
- securityAttributes
- Evidence
Informações usadas para tomar decisões sobre política de segurança e conceder permissões.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias sem valor.
- Atributos
Exceções
domain
ou typeName
é null
.
Nenhum construtor correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Comentários
Use CreateInstance quando um host precisar executar código em um domínio de aplicativo que tenha permissões de segurança restritas.
Use ObjectHandle.Unwrap para desencapsular 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 corresponda melhor 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 remoto no qual o tipo chamado typeName
foi criado.
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
- ignoreCase
- Boolean
true
para especificar que a pesquisa de typeName
não diferencia maiúsculas de minúsculas; false
para especificar que a pesquisa diferencia maiúsculas de minúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor typeName
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor typeName
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias sem valor.
- Atributos
Exceções
domain
ou typeName
é null
.
Nenhum construtor correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Comentários
Use CreateInstance quando um host precisar executar código em um domínio de aplicativo que tenha permissões de segurança restritas.
Use ObjectHandle.Unwrap para desencapsular 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
Cria uma instância do tipo cujo nome é especificado, usando o assembly 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);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
- ignoreCase
- Boolean
true
para especificar que a pesquisa de typeName
não diferencia maiúsculas de minúsculas; false
para especificar que a pesquisa diferencia maiúsculas de minúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor typeName
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor typeName
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
Retornos
Um identificador que deve ser desembrulhado para acessar a instância recém-criada ou null
para Nullable<T> instâncias sem valor.
Exceções
typeName
é null
.
Nenhum construtor correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Comentários
Use ObjectHandle.Unwrap para desencapsular o valor de retorno.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para criar tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessão do assembly que contém os tipos e membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino 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
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 ser criado.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor type
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor type
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor type
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias sem valor.
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor correspondente foi encontrado.
type
é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não é registrada.
type
não é um tipo válido.
Comentários
O construtor a ser invocado deve fornecer a correspondência mais específica com a lista de argumentos especificada sob as restrições dos atributos de associação e associador especificados.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessão dos tipos e membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino 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
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 ser criado.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor type
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor type
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor type
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias sem valor.
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor correspondente foi encontrado.
type
é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não é registrada.
type
não é um tipo válido.
Comentários
O construtor a ser invocado deve fornecer a correspondência mais específica com a lista de argumentos especificada sob as restrições dos atributos de associação e associador especificados.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessão do assembly que contém os tipos não públicos e os membros estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, Object[], Object[])
- 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 ser criado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias sem valor.
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor público correspondente foi encontrado.
type
é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não é registrada.
type
não é um tipo válido.
Comentários
O construtor a ser invocado deve estar acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões do assembly que contém os tipos não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino 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
Cria uma instância do tipo cujo nome é especificado, usando o assembly 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);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName, object[] activationAttributes);
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, activationAttributes As Object()) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias.
Exceções
typeName
é null
.
Nenhum construtor público correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
activationAttributes
não é um UrlAttribute
matriz.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
O construtor invocado gera uma exceção.
-ou-
Ocorreu um erro durante a tentativa de ativação remota em um destino especificado em activationAttributes
.
Comentários
Use ObjectHandle.Unwrap para desencapsular o valor de retorno.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para criar tipos não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões dos tipos não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Cuidado
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 assembly 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 do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
- ignoreCase
- Boolean
true
para especificar que a pesquisa de typeName
não diferencia maiúsculas de minúsculas; false
para especificar que a pesquisa diferencia maiúsculas de minúsculas.
- bindingAttr
- BindingFlags
Uma combinação de zero ou mais sinalizadores de bit que afetam a pesquisa do construtor typeName
. Caso bindingAttr
seja zero, uma pesquisa que diferencia maiúsculas de minúsculas para construtores públicos é realizada.
- binder
- Binder
Um objeto que usa bindingAttr
e args
para buscar e identificar o construtor typeName
. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
- culture
- CultureInfo
Informações específicas de cultura que controlam a coerção de args
para os tipos formais declarados do construtor typeName
. Caso culture
seja null
, CultureInfo para o thread atual é usado.
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.
Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.
- securityInfo
- Evidence
Informações usadas para tomar decisões sobre política de segurança e conceder permissões.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias sem valor.
- Atributos
Exceções
typeName
é null
.
Nenhum construtor correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
activationAttributes
não é uma matriz vazia, e o tipo que está sendo criado não deriva de MarshalByRefObject.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Comentários
Use ObjectHandle.Unwrap para desencapsular o valor de retorno.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para criar tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessão do assembly que contém os tipos e membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(Type, Object[])
- 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 ser criado.
- args
- Object[]
Uma matriz de argumentos que correspondem em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se args
for uma matriz vazia ou null
, o construtor que não usa nenhum parâmetro (o construtor sem parâmetros) será invocado.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias sem valor.
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
- ou -
O construtor que melhor corresponde a args
tem argumentos varargs
.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de 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 associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor público correspondente foi encontrado.
Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de 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 é registrada.
type
não é um tipo válido.
Exemplos
O exemplo a seguir chama o CreateInstance(Type, Object[]) método para criar um String objeto . Ele chama o String.String(Char[], Int32, Int32) construtor para instanciar uma cadeia de caracteres que contém dez elementos de uma matriz 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 a seguir cria uma matriz irregular cujos elementos são argumentos a serem passados para um String construtor. Em seguida, o exemplo passa cada matriz para o CreateInstance(Type, Object[]) método para invocar o construtor de cadeia de caracteres 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
Comentários
O construtor a ser invocado deve estar acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões do assembly que contém os tipos não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino 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
Cria uma instância do tipo especificado usando o construtor sem parâmetros do 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 ser criado.
- nonPublic
- Boolean
true
se um construtor público ou não público sem parâmetros puder ter uma correspondência; false
se apenas um construtor público sem parâmetros puder ter uma correspondência.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias .
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor público correspondente foi encontrado.
type
é um objeto COM, mas o identificador de classe usado para obter o tipo é inválido, ou a classe identificada não é registrada.
type
não é um tipo válido.
Comentários
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos e membros não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões do assembly que contém os tipos e membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino 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
Cria uma instância do tipo cujo nome é especificado, usando o assembly nomeado e o construtor sem parâmetros.
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(System::String ^ assemblyName, System::String ^ typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance (string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance (string assemblyName, string typeName);
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle
Parâmetros
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias.
Exceções
typeName
é null
.
Nenhum construtor público correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de uma classe abstrata, ou este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Exemplos
O exemplo a seguir define uma classe chamada Person
em um assembly chamado PersonInfo
. Observe 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 a seguir chama o CreateInstance(String, String) método para instanciar a Person
classe . Ele requer uma referência a PersonInfo.dll a serem adicionados ao projeto. Como o CreateInstance(String, String) método chama o Person
construtor sem parâmetros da 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 ultrapassa os limites da máquina ou que não é conhecido em tempo de design. Nesse caso, você não pode incluir uma referência ao assembly no projeto e não pode fazer chamadas de associação antecipada aos membros do tipo. Para contornar essa limitação, o exemplo a seguir usa o CreateInstance método juntamente com reflexão para atribuir um valor à Person
propriedade do Name
objeto e exibir 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
Comentários
Use ObjectHandle.Unwrap para desencapsular o valor de retorno.
assemblyName
pode ser um dos seguintes:
O nome simples de um assembly, sem seu caminho ou extensão de arquivo. Por exemplo, você especificaria
TypeExtensions
para um assembly cujo caminho e nome são .\bin\TypeExtensions.dll.O nome completo de um assembly assinado, que consiste em 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 obter mais informações sobre como o Common Language Runtime identifica e carrega assemblies, consulte Como o Runtime localiza assemblies. Para obter informações sobre como usar o arquivo de configuração de aplicativo para definir locais de assembly, consulte Especificando o local de um assembly. Se assemblyName
for encontrado, ele será carregado no contexto padrão.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para criar tipos não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões do assembly que contém os tipos não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(ActivationContext, String[])
Cria uma instância do tipo que é designada pelo objeto ActivationContext especificado e ativada com os dados de ativação personalizados 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 do contexto de ativação que especifica o objeto a ser criado.
- activationCustomData
- String[]
Uma matriz de cadeias de caracteres Unicode que contêm dados de ativação personalizados.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias.
Comentários
Use o método ObjectHandle.Unwrap para desencapsular o valor de retorno.
O contexto de ativação é usado durante a ativação baseada em manifesto para configurar a política de domínio e fornecer um modelo de segurança baseado em aplicativo. A ActivationContext classe contém um ApplicationIdentity objeto que fornece acesso ao manifesto do aplicativo. Para obter mais informações, consulte a classe ApplicationSecurityManager.
Confira também
Aplica-se a
CreateInstance(Type)
- Origem:
- Activator.cs
- Origem:
- Activator.cs
- Origem:
- Activator.cs
Cria uma instância do tipo especificado usando o construtor sem parâmetros do 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 ser criado.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias .
Exceções
type
é null
.
type
não é um RuntimeType
.
- ou -
type
é um tipo genérico aberto (ou seja, a propriedade ContainsGenericParameters retorna true
).
type
não pode ser um TypeBuilder.
- ou -
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
- ou -
O assembly que contém type
é um assembly dinâmico que foi criado com Save.
O construtor que está sendo chamado lança uma exceção.
O chamador não tem permissão para chamar esse construtor.
Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de 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 associação tardia.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
Nenhum construtor público correspondente foi encontrado.
Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de 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 é registrada.
type
não é um tipo válido.
Exemplos
O exemplo de código a seguir demonstra como chamar o CreateInstance(Type) método . Instâncias de vários tipos diferentes são criadas e seus valores padrão são exibidos.
using namespace System;
ref class DynamicInstanceList
{
private:
static String^ instanceSpec = "System.EventArgs;System.Random;" +
"System.Exception;System.Object;System.Version";
public:
static void Main()
{
array<String^>^ instances = instanceSpec->Split(';');
Array^ instlist = Array::CreateInstance(Object::typeid, instances->Length);
Object^ item;
for (int i = 0; i < instances->Length; i++)
{
// create the object from the specification string
Console::WriteLine("Creating instance of: {0}", instances[i]);
item = Activator::CreateInstance(Type::GetType(instances[i]));
instlist->SetValue(item, i);
}
Console::WriteLine("\nObjects and their default values:\n");
for each (Object^ o in instlist)
{
Console::WriteLine("Type: {0}\nValue: {1}\nHashCode: {2}\n",
o->GetType()->FullName, o->ToString(), o->GetHashCode());
}
}
};
int main()
{
DynamicInstanceList::Main();
}
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
using System;
class DynamicInstanceList
{
private static string instanceSpec = "System.EventArgs;System.Random;" +
"System.Exception;System.Object;System.Version";
public static void Main()
{
string[] instances = instanceSpec.Split(';');
Array instlist = Array.CreateInstance(typeof(object), instances.Length);
object item;
for (int i = 0; i < instances.Length; i++)
{
// create the object from the specification string
Console.WriteLine("Creating instance of: {0}", instances[i]);
item = Activator.CreateInstance(Type.GetType(instances[i]));
instlist.SetValue(item, i);
}
Console.WriteLine("\nObjects and their default values:\n");
foreach (object o in instlist)
{
Console.WriteLine("Type: {0}\nValue: {1}\nHashCode: {2}\n",
o.GetType().FullName, o.ToString(), o.GetHashCode());
}
}
}
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
open System
let instanceSpec =
"System.EventArgs;System.Random;System.Exception;System.Object;System.Version"
let instances = instanceSpec.Split ';'
let instlist = Array.zeroCreate instances.Length
let mutable item = obj ()
for i = 0 to instances.Length - 1 do
// create the object from the specification string
printfn $"Creating instance of: {instances.[i]}"
item <- Activator.CreateInstance(Type.GetType instances.[i])
instlist.[i] <- item
printfn "\nObjects and their default values:\n"
for o in instlist do
printfn $"Type: {o.GetType().FullName}\nValue: {o}\nHashCode: {o.GetHashCode()}\n"
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575
Class DynamicInstanceList
Private Shared instanceSpec As String = "System.EventArgs;System.Random;" + _
"System.Exception;System.Object;System.Version"
Public Shared Sub Main()
Dim instances() As String = instanceSpec.Split(";")
Dim instlist As Array = Array.CreateInstance(GetType(Object), instances.Length)
Dim item As Object
For i As Integer = 0 To instances.Length -1
' create the object from the specification string
Console.WriteLine("Creating instance of: {0}", instances(i))
item = Activator.CreateInstance(Type.GetType(instances(i)))
instlist.SetValue(item, i)
Next i
Console.WriteLine(Environment.NewLine + "Objects and their default values:" + Environment.NewLine)
For Each o As Object In instlist
Console.WriteLine("Type: {0}" + Environment.NewLine + "Value: {1}" + _
Environment.NewLine + "HashCode: {2}" + Environment.NewLine, _
o.GetType().FullName, o.ToString(), o.GetHashCode())
Next o
End Sub
End Class
' This program will display output similar to the following:
'
' Creating instance of: System.EventArgs
' Creating instance of: System.Random
' Creating instance of: System.Exception
' Creating instance of: System.Object
' Creating instance of: System.Version
'
' Objects and their default values:
'
' Type: System.EventArgs
' Value: System.EventArgs
' HashCode: 46104728
'
' Type: System.Random
' Value: System.Random
' HashCode: 12289376
'
' Type: System.Exception
' Value: System.Exception: Exception of type 'System.Exception' was thrown.
' HashCode: 55530882
'
' Type: System.Object
' Value: System.Object
' HashCode: 30015890
'
' Type: System.Version
' Value: 0.0
' HashCode: 1048575
Comentários
O construtor a ser invocado deve estar acessível.
Observação
A partir do .NET Framework 2.0, esse método poderá ser usado para acessar tipos não públicos se o chamador tiver sido concedido ReflectionPermission com o ReflectionPermissionFlag.RestrictedMemberAccess sinalizador e se o conjunto de concessões do assembly que contém os tipos não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Considerações de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ter como destino o .NET Framework 3.5 ou posterior.
Aplica-se a
CreateInstance(ActivationContext)
Cria uma instância do tipo designado pelo objeto ActivationContext especificado.
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 do contexto de ativação que especifica o objeto a ser criado.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias.
Comentários
Use o método ObjectHandle.Unwrap para desencapsular o valor de retorno.
O contexto de ativação é usado durante a ativação baseada em manifesto para configurar a política de domínio e fornecer um modelo de segurança baseado em aplicativo. A ActivationContext classe contém um ApplicationIdentity objeto que fornece acesso ao manifesto do aplicativo. Para obter mais informações, consulte a classe ApplicationSecurityManager.
Confira 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 em que o tipo chamado typeName
é criado.
- assemblyName
- String
O nome do assembly em que o tipo chamado typeName
é procurado. Caso assemblyName
seja null
, o assembly em execução é pesquisado.
- typeName
- String
O nome totalmente qualificado do tipo do qual uma instância será criada.
Retornos
Um identificador que deve ser desembrulhado para acessar o objeto recém-criado ou null
para Nullable<T> instâncias.
- Atributos
Exceções
typeName
ou domain
é null
.
Nenhum construtor público correspondente foi encontrado.
typename
não foi encontrado em assemblyName
.
assemblyName
não foi encontrado.
O chamador não tem permissão para chamar esse construtor.
Não é possível criar uma instância de um tipo abstrato.
- ou -
Este membro foi invocado com um mecanismo de associação tardia.
O construtor, que foi invocado por meio da reflexão, lançou uma exceção.
O tipo COM não foi obtido por meio de GetTypeFromProgID ou GetTypeFromCLSID.
A criação de tipos TypedReference, ArgIterator, Void e RuntimeArgumentHandle ou arrays desses tipos não é suportada.
assemblyName
não é um assembly válido.
- ou -
A versão 2.0 do Common Language Runtime (CLR) ou posterior é carregado no momento, e assemblyName
foi compilado para uma versão do CLR posterior à versão carregada atualmente. Todas as versões do .NET Framework 2.0, 3.0 e 3.5 usam o CLR versão 2.0.
Um assembly ou módulo foi carregado duas vezes em com duas evidências diferentes.
- ou -
O nome do assembly ou a base de código é inválido.
Comentários
Use CreateInstance quando um host precisar executar código em um domínio de aplicativo que tenha permissões de segurança restritas.
Use ObjectHandle.Unwrap para desencapsular o valor de retorno.
Aplica-se a
CreateInstance<T>()
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
- Origem:
- Activator.RuntimeType.cs
Cria uma instância do tipo designado pelo parâmetro de tipo genérico especificado, usando o construtor sem parâmetros.
public:
generic <typename T>
static T CreateInstance();
public static T CreateInstance<T> ();
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T
Parâmetros de tipo
- T
O tipo a ser criado.
Retornos
Uma referência ao objeto recém-criado ou null
a Nullable<T> instâncias .
Exceções
Não é possível criar uma instância de uma classe abstrata ou o tipo especificado para T
não tem um construtor sem parâmetros.
Observação: no .NET para aplicativos da Windows Store ou na Biblioteca de Classes Portátil, capture a exceção de classe base, MissingMemberException, em vez disso.
Comentários
O CreateInstance<T>() método genérico é usado por compiladores para implementar a instanciação de tipos especificados por parâmetros de tipo. Por exemplo, no método genérico a seguir, a implementação de new T()
(gcnew T()
em C++) usa o CreateInstance<T>() método genérico.
public:
generic <typename T> where T:gcnew()
static T Bar()
{
return gcnew T();
}
public static T Factory<T>() where T : new()
{
return new T();
}
let factory<'T when 'T : (new: unit -> 'T)> =
new 'T()
Public Shared Function Factory(Of T As New)() As T
Return New T()
End Function
Em geral, não há uso para o CreateInstance<T>() método genérico no código do aplicativo, pois o tipo deve ser conhecido em tempo de compilação. Se o tipo for conhecido em tempo de compilação, a sintaxe de instanciação normal poderá ser usada (new
operador em C#, New
no Visual Basic, gcnew
em C++). Se o tipo não for conhecido em tempo de compilação, você poderá chamar uma sobrecarga não genérica de CreateInstance.
Não há sobrecargas do CreateInstance<T>() método genérico que recebem listas de argumentos, pois as sobrecargas não genéricas de CreateInstance já fornecem resolução de construtor de associação tardia.
Aplica-se a
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de