Partilhar via


Activator.CreateInstance Método

Definição

Cria uma instância do tipo especificado usando o construtor que melhor corresponde aos parâmetros especificados.

Sobrecargas

Nome 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 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 desse 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 especificado e ativada ActivationContext com os dados de ativação personalizados 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 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 https://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 https://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 https://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 em que o tipo nomeado typeName é criado.

assemblyName
String

O nome do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

ignoreCase
Boolean

true para especificar que a pesquisa 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 sinalizadores de zero ou mais bits que afetam a pesquisa do typeName construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o typeName construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, o CultureInfo thread atual será 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 UrlAttribute objeto. Especifica UrlAttribute a URL necessária para ativar um objeto remoto.

securityAttributes
Evidence

Informações usadas para tomar decisões de política de segurança e conceder permissões de código.

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 esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou 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 desembrulhar o valor retornado.

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 em que o tipo nomeado typeName é criado.

assemblyName
String

O nome do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

ignoreCase
Boolean

true para especificar que a pesquisa 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 sinalizadores de zero ou mais bits que afetam a pesquisa do typeName construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o typeName construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, o CultureInfo thread atual será 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 UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. 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 esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou 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 desembrulhar o valor retornado.

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 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.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 do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

ignoreCase
Boolean

true para especificar que a pesquisa 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 sinalizadores de zero ou mais bits que afetam a pesquisa do typeName construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o typeName construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, o CultureInfo thread atual será 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 UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. 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.

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 esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou base de código é inválido.

Comentários

Use ObjectHandle.Unwrap para desembrulhar o valor retornado.

No .NET Core 3.0 e versões posteriores, as cargas de assembly disparadas por essa API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.

Nota

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ões 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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 ser criado.

bindingAttr
BindingFlags

Uma combinação de sinalizadores de zero ou mais bits que afetam a pesquisa do type construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o type construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o type construtor. Se culture for null, o CultureInfo thread atual será 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 UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.

Retornos

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 (ou seja, a ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está 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 do associador especificado e dos atributos de associação.

Nota

Esse método pode 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 dos tipos e membros não públicos estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 ser criado.

bindingAttr
BindingFlags

Uma combinação de sinalizadores de zero ou mais bits que afetam a pesquisa do type construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o type construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o type construtor. Se culture for null, o CultureInfo thread atual será usado.

Retornos

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 (ou seja, a ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-ou-

O assembly que contém type é um assembly dinâmico que foi criado com Save.

-ou-

O construtor que melhor corresponde args tem varargs argumentos.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está 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 do associador especificado e dos atributos de associação.

Nota

Esse método pode 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 não públicos e os membros estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 ser criado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (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 UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.

Retornos

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 (ou seja, a ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está registrada.

type não é um tipo válido.

Comentários

O construtor a ser invocado deve ser acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.

Nota

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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 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);
[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 do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

activationAttributes
Object[]

Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, essa é uma matriz que contém um único UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. 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.

Atributos

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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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

array.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou base de código é inválido.

O construtor invocado gera uma exceção.

-ou-

Ocorreu um erro ao tentar ativação remota em um destino especificado em activationAttributes.

Comentários

Use ObjectHandle.Unwrap para desembrulhar o valor retornado.

No .NET Core 3.0 e versões posteriores, as cargas de assembly disparadas por essa API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.

Nota

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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 https://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 https://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 https://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 nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

ignoreCase
Boolean

true para especificar que a pesquisa 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 sinalizadores de zero ou mais bits que afetam a pesquisa do typeName construtor. Se bindingAttr for zero, uma pesquisa que diferencia maiúsculas de minúsculas por construtores públicos será realizada.

binder
Binder

Um objeto que usa bindingAttr e args procura e identifica o typeName construtor. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

culture
CultureInfo

Informações específicas da cultura que regem a coerção dos args tipos formais declarados para o typeName construtor. Se culture for null, o CultureInfo thread atual será 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 UrlAttribute objeto 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 que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.

securityInfo
Evidence

Informações usadas para tomar decisões de política de segurança e conceder permissões de código.

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 esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-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 args tem varargs argumentos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou base de código é inválido.

Comentários

Use ObjectHandle.Unwrap para desembrulhar o valor retornado.

Nota

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ões 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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 ser criado.

args
Object[]

Uma matriz de argumentos que correspondem em número, ordem e digite os parâmetros do construtor a ser invocado. Se args for uma matriz vazia ou null, o construtor que não usa parâmetros (o construtor sem parâmetros) será invocado.

Retornos

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 (ou seja, a ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-ou-

O assembly que contém type é um assembly dinâmico que foi criado com Save.

-ou-

O construtor que melhor corresponde args tem varargs argumentos.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está 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 criar uma instância de 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 ser acessível e deve fornecer a correspondência mais específica com a lista de argumentos especificada.

Nota

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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 ser criado.

nonPublic
Boolean

true se um construtor público ou não público sem parâmetros puder corresponder; false se apenas um construtor público sem parâmetros puder corresponder.

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 ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-ou-

O assembly que contém type é um assembly dinâmico que foi criado com Save.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está registrada.

type não é um tipo válido.

Comentários

Nota

Esse método pode 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 não públicos e os membros estiver restrito ao conjunto de concessões do chamador ou a um subconjunto dele. (Consulte Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 assembly 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 do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

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 é 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.

Você não pode criar uma instância de uma classe abstrata ou esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou base de código é inválido.

Exemplos

O exemplo a seguir define uma classe nomeada Person em um assembly chamado PersonInfo. Observe que a Person classe tem dois construtores, um deles 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 criar uma instância de um tipo que cruza 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 com limite antecipado para os membros do tipo. Para contornar essa limitação, o exemplo a seguir usa o CreateInstance método junto com a 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 desembrulhar o valor retornado.

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 do aplicativo para definir locais de assembly, consulte Especificando o local de um assembly. Se assemblyName for encontrado, ele será carregado no contexto padrão.

No .NET Core 3.0 e versões posteriores, as cargas de assembly disparadas por essa API são afetadas pelo valor atual de AssemblyLoadContext.CurrentContextualReflectionContext.

Nota

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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .NET Framework 3.5 ou posterior.

Aplica-se a

CreateInstance(ActivationContext, String[])

Cria uma instância do tipo que é designada pelo objeto especificado e ativada ActivationContext 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 de 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 ObjectHandle.Unwrap método para desembrulhar o valor retornado.

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
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 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 ContainsGenericParameters propriedade retorna true).

type não pode ser um TypeBuilder.

-ou-

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

-ou-

O assembly que contém type é um assembly dinâmico que foi criado com Save.

O construtor chamado gera 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 esse membro foi invocado com um mecanismo de associação tardia.

O tipo COM não foi obtido por meio 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 está 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 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.

Nota

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 Seções de segurança para reflexão.) Para usar essa funcionalidade, seu aplicativo deve ser direcionado .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 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 ObjectHandle.Unwrap método para desembrulhar o valor retornado.

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 nomeado typeName é criado.

assemblyName
String

O nome do assembly em que o tipo nomeado typeName é procurado. Se assemblyName estiver null, o assembly em execução será pesquisado.

typeName
String

O nome totalmente qualificado do tipo do qual criar uma instância.

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-

Esse 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 GetTypeFromProgID ou GetTypeFromCLSID.

Não há suporte para a criação de TypedReferencetiposArgIteratorVoid, RuntimeArgumentHandle tipos ou matrizes desses tipos.

assemblyName não é um assembly válido.

-ou-

O CLR (Common Language Runtime) versão 2.0 ou posterior está carregado no momento e assemblyName foi compilado para uma versão do CLR posterior à versão carregada no momento. Observe que as versões do .NET Framework 2.0, 3.0 e 3.5 usam clr versão 2.0.

Um assembly ou módulo foi carregado duas vezes com duas evidências diferentes.

-ou-

O nome do assembly ou 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 desembrulhar o valor retornado.

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 de tipo 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

T

O tipo a ser criado.

Retornos

T

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 T não tem um construtor sem parâmetros.

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 usa new T() 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á uso para o CreateInstance<T>() método genérico no código do aplicativo, pois o tipo deve ser conhecido no momento da compilação. Se o tipo for conhecido no tempo de compilação, a sintaxe de instanciação normal poderá ser usada (new operador em C#, New no Visual Basic). Se o tipo não for conhecido no momento da 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 levem 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