Compartir vía


Activator.CreateInstance Método

Definición

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los parámetros especificados.

Sobrecargas

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoletos.

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor que mejor coincide con los parámetros especificados.

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor que mejor coincide con los parámetros especificados.

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

Crea una instancia del tipo cuyo nombre se especifica, utilizando el ensamblado con nombre y el constructor que mejor coincide con los parámetros especificados.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los parámetros especificados.

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los parámetros especificados.

CreateInstance(Type, Object[], Object[])

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los parámetros especificados.

CreateInstance(String, String, Object[])

Crea una instancia del tipo cuyo nombre se especifica mediante el ensamblado con nombre y el constructor sin parámetros.

CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)
Obsoletos.

Crea una instancia del tipo cuyo nombre se especifica, utilizando el ensamblado con nombre y el constructor que mejor coincide con los parámetros especificados.

CreateInstance(Type, Object[])

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los parámetros especificados.

CreateInstance(Type, Boolean)

Crea una instancia del tipo especificado mediante el constructor sin parámetros de ese tipo.

CreateInstance(String, String)

Crea una instancia del tipo cuyo nombre se especifica mediante el ensamblado con nombre y el constructor sin parámetros.

CreateInstance(ActivationContext, String[])

Crea una instancia del tipo designado por el objeto ActivationContext especificado y se activa con los datos de activación personalizados especificados.

CreateInstance(Type)

Crea una instancia del tipo especificado mediante el constructor sin parámetros de ese tipo.

CreateInstance(ActivationContext)

Crea una instancia del tipo designado por el objeto ActivationContext especificado.

CreateInstance(AppDomain, String, String)

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor sin parámetros.

CreateInstance<T>()

Crea una instancia del tipo designado por el parámetro de tipo genérico especificado mediante el constructor sin parámetros.

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

Precaución

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.

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor que mejor coincide con los 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

Dominio donde se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

ignoreCase
Boolean

true especificar que la búsqueda de typeName no distingue mayúsculas de minúsculas; false especificar que la búsqueda distingue mayúsculas de minúsculas.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de typeName. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de typeName. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de typeName. Si culture es null, se usa el CultureInfo para el subproceso actual.

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute. El UrlAttribute especifica la dirección URL necesaria para activar un objeto remoto.

securityAttributes
Evidence

Información que se usa para tomar decisiones de directiva de seguridad y conceder permisos de código.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Atributos

Excepciones

domain o typeName es null.

No se encontró ningún constructor coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Comentarios

Use CreateInstance cuando un host necesite ejecutar código en un dominio de aplicación que tenga permisos de seguridad restringidos.

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Se aplica a

CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor que mejor coincide con los 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

Dominio donde se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

ignoreCase
Boolean

true especificar que la búsqueda de typeName no distingue mayúsculas de minúsculas; false especificar que la búsqueda distingue mayúsculas de minúsculas.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de typeName. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de typeName. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de typeName. Si culture es null, se usa el CultureInfo para el subproceso actual.

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Atributos

Excepciones

domain o typeName es null.

No se encontró ningún constructor coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Comentarios

Use CreateInstance cuando un host necesite ejecutar código en un dominio de aplicación que tenga permisos de seguridad restringidos.

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Se aplica a

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

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo cuyo nombre se especifica, utilizando el ensamblado con nombre y el constructor que mejor coincide con los 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

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

ignoreCase
Boolean

true especificar que la búsqueda de typeName no distingue mayúsculas de minúsculas; false especificar que la búsqueda distingue mayúsculas de minúsculas.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de typeName. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de typeName. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de typeName. Si culture es null, se usa el CultureInfo para el subproceso actual.

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para acceder a la instancia recién creada o null para las instancias de Nullable<T> sin ningún valor.

Excepciones

typeName es null.

No se encontró ningún constructor coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Comentarios

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Nota

A partir de .NET Framework 2.0, este método se puede usar para crear tipos y miembros no públicos si se ha concedido al autor de la llamada ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los 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

Tipo de objeto que se va a crear.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de type. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de type. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de type. Si culture es null, se usa el CultureInfo para el subproceso actual.

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

Devoluciones

Referencia al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor coincidente.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Comentarios

El constructor que se va a invocar debe proporcionar la coincidencia más específica con la lista de argumentos especificada bajo las restricciones del enlazador y los atributos de enlace especificados.

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a los tipos y miembros no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca de ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión de los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)

Source:
Activator.cs
Source:
Activator.cs
Source:
Activator.cs

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los 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

Tipo de objeto que se va a crear.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de type. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de type. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de type. Si culture es null, se usa el CultureInfo para el subproceso actual.

Devoluciones

Referencia al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor coincidente.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Comentarios

El constructor que se va a invocar debe proporcionar la coincidencia más específica con la lista de argumentos especificada bajo las restricciones del enlazador y los atributos de enlace especificados.

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a los tipos y miembros no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(Type, Object[], Object[])

Source:
Activator.cs
Source:
Activator.cs
Source:
Activator.cs

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los 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

Tipo de objeto que se va a crear.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

Devoluciones

Referencia al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor público coincidente.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Comentarios

El constructor que se va a invocar debe ser accesible y debe proporcionar la coincidencia más específica con la lista de argumentos especificada.

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a tipos no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(String, String, Object[])

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo cuyo nombre se especifica mediante el ensamblado con nombre y el constructor sin 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

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para las instancias de Nullable<T>.

Excepciones

typeName es null.

No se encontró ningún constructor público coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

activationAttributes no es un UrlAttribute

arreglo.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

El constructor invocado produce una excepción.

-o-

Error al intentar la activación remota en un destino especificado en activationAttributes.

Comentarios

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Nota

A partir de .NET Framework 2.0, este método se puede usar para crear tipos no públicos si se ha concedido al autor de la llamada ReflectionPermission con la marca de ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión de los tipos no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

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

Precaución

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.

Crea una instancia del tipo cuyo nombre se especifica, utilizando el ensamblado con nombre y el constructor que mejor coincide con los 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

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

ignoreCase
Boolean

true especificar que la búsqueda de typeName no distingue mayúsculas de minúsculas; false especificar que la búsqueda distingue mayúsculas de minúsculas.

bindingAttr
BindingFlags

Combinación de cero o más marcas de bits que afectan a la búsqueda del constructor de typeName. Si bindingAttr es cero, se realiza una búsqueda con distinción entre mayúsculas y minúsculas de constructores públicos.

binder
Binder

Objeto que usa bindingAttr y args para buscar e identificar el constructor de typeName. Si binder es null, se usa el enlazador predeterminado.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que rige la coerción de args a los tipos formales declarados para el constructor de typeName. Si culture es null, se usa el CultureInfo para el subproceso actual.

activationAttributes
Object[]

Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, se trata de una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.

Este parámetro está relacionado con los objetos activados por el cliente. La activación de cliente es una tecnología heredada que se conserva para la compatibilidad con versiones anteriores, pero no se recomienda para el nuevo desarrollo. En su lugar, las aplicaciones distribuidas deben usar Windows Communication Foundation.

securityInfo
Evidence

Información que se usa para tomar decisiones de directiva de seguridad y conceder permisos de código.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Atributos

Excepciones

typeName es null.

No se encontró ningún constructor coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

activationAttributes no es una matriz vacía y el tipo que se crea no deriva de MarshalByRefObject.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Comentarios

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Nota

A partir de .NET Framework 2.0, este método se puede usar para crear tipos y miembros no públicos si se ha concedido al autor de la llamada ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(Type, Object[])

Source:
Activator.cs
Source:
Activator.cs
Source:
Activator.cs

Crea una instancia del tipo especificado mediante el constructor que mejor coincide con los 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

Tipo de objeto que se va a crear.

args
Object[]

Matriz de argumentos que coinciden en número, orden y escriben los parámetros del constructor que se va a invocar. Si args es una matriz vacía o null, se invoca el constructor que no toma parámetros (el constructor sin parámetros).

Devoluciones

Referencia al objeto recién creado o null para Nullable<T> instancias sin ningún valor.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

-o-

El constructor que mejor coincide con args tiene varargs argumentos.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable de , captura la excepción de clase base, MemberAccessException, en su lugar.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor público coincidente.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable de , captura la excepción de clase base, MissingMemberException, en su lugar.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Ejemplos

En el ejemplo siguiente se llama al método CreateInstance(Type, Object[]) para crear un objeto String. Llama al constructor String.String(Char[], Int32, Int32) para crear una instancia de una cadena que contiene diez elementos de una matriz de caracteres a partir de la decimocuarta posición.

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

En el ejemplo siguiente se crea una matriz escalonada cuyos elementos son argumentos que se van a pasar a un constructor de String. A continuación, el ejemplo pasa cada matriz al método CreateInstance(Type, Object[]) para invocar el constructor de cadena adecuado.

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

Comentarios

El constructor que se va a invocar debe ser accesible y debe proporcionar la coincidencia más específica con la lista de argumentos especificada.

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a tipos no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(Type, Boolean)

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo especificado mediante el constructor sin parámetros de ese 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

Tipo de objeto que se va a crear.

nonPublic
Boolean

true si un constructor público o no público sin parámetros puede coincidir; false si solo un constructor público sin parámetros puede coincidir.

Devoluciones

Referencia al objeto recién creado o null para las instancias de Nullable<T>.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor público coincidente.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Comentarios

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a los tipos y miembros no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(String, String)

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo cuyo nombre se especifica mediante el ensamblado con nombre y el constructor sin 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

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para las instancias de Nullable<T>.

Excepciones

typeName es null.

No se encontró ningún constructor público coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Ejemplos

En el ejemplo siguiente se define una clase denominada Person en un ensamblado denominado PersonInfo. Tenga en cuenta que la clase Person tiene dos constructores, uno de los cuales es sin 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

En el ejemplo siguiente se llama al método CreateInstance(String, String) para crear instancias de la clase Person. Requiere una referencia a PersonInfo.dll que se agregue al proyecto. Dado que el método CreateInstance(String, String) llama al constructor sin parámetros de Person clase, el ejemplo asigna un valor a su propiedad Name.

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

Sin embargo, se suele llamar a CreateInstance para crear instancias de un tipo que cruza los límites de la máquina o que no se conoce en tiempo de diseño. En este caso, no puede incluir una referencia al ensamblado en el proyecto y no puede realizar llamadas enlazadas anticipadas a los miembros del tipo. Para solucionar esta limitación, en el ejemplo siguiente se usa el método CreateInstance junto con la reflexión para asignar un valor a la propiedad Name del objeto Person y mostrar su 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

Comentarios

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

assemblyName puede ser una de las siguientes:

  • Nombre simple de un ensamblado, sin su ruta de acceso o extensión de archivo. Por ejemplo, especificaría TypeExtensions para un ensamblado cuya ruta de acceso y nombre son .\bin\TypeExtensions.dll.

  • Nombre completo de un ensamblado firmado, que consta de su nombre simple, versión, referencia cultural y token de clave pública; por ejemplo, "TypeExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=181869f2f7435b51".

Para obtener más información sobre cómo Common Language Runtime identifica y carga ensamblados, vea How the Runtime Locates Assemblies. Para obtener información sobre cómo usar el archivo de configuración de la aplicación para definir ubicaciones de ensamblado, consulte Especificación de la ubicación de un ensamblado. Si se encuentra assemblyName, se carga en el contexto predeterminado.

Nota

A partir de .NET Framework 2.0, este método se puede usar para crear tipos no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(ActivationContext, String[])

Crea una instancia del tipo designado por el objeto ActivationContext especificado y se activa con los datos de activación 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

Objeto de contexto de activación que especifica el objeto que se va a crear.

activationCustomData
String[]

Matriz de cadenas Unicode que contienen datos de activación personalizados.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para las instancias de Nullable<T>.

Comentarios

Use el método ObjectHandle.Unwrap para desencapsular el valor devuelto.

El contexto de activación se usa durante la activación basada en manifiesto para configurar la directiva de dominio y proporcionar un modelo de seguridad basado en la aplicación. La clase ActivationContext contiene un objeto ApplicationIdentity que proporciona acceso al manifiesto de aplicación. Para obtener más información, consulte la clase ApplicationSecurityManager.

Consulte también

Se aplica a

CreateInstance(Type)

Source:
Activator.cs
Source:
Activator.cs
Source:
Activator.cs

Crea una instancia del tipo especificado mediante el constructor sin parámetros de ese 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

Tipo de objeto que se va a crear.

Devoluciones

Referencia al objeto recién creado o null para las instancias de Nullable<T>.

Excepciones

type es null.

type no es un RuntimeType.

-o-

type es un tipo genérico abierto (es decir, la propiedad ContainsGenericParameters devuelve true).

type no puede ser un TypeBuilder.

-o-

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

-o-

El ensamblado que contiene type es un ensamblado dinámico que se creó con Save.

El constructor al que se llama produce una excepción.

El autor de la llamada no tiene permiso para llamar a este constructor.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable de , captura la excepción de clase base, MemberAccessException, en su lugar.

No se puede crear una instancia de una clase abstracta o este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se encontró ningún constructor público coincidente.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable de , captura la excepción de clase base, MissingMemberException, en su lugar.

type es un objeto COM, pero el identificador de clase utilizado para obtener el tipo no es válido o la clase identificada no está registrada.

type no es un tipo válido.

Ejemplos

En el ejemplo de código siguiente se muestra cómo llamar al método CreateInstance(Type). Se crean instancias de varios tipos diferentes y se muestran sus valores predeterminados.

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

Comentarios

El constructor que se va a invocar debe ser accesible.

Nota

A partir de .NET Framework 2.0, este método se puede usar para tener acceso a tipos no públicos si el autor de la llamada se ha concedido ReflectionPermission con la marca ReflectionPermissionFlag.RestrictedMemberAccess y si el conjunto de concesión del ensamblado que contiene los tipos no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para lade reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.

Se aplica a

CreateInstance(ActivationContext)

Crea una instancia del tipo designado por el 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

Objeto de contexto de activación que especifica el objeto que se va a crear.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para las instancias de Nullable<T>.

Comentarios

Use el método ObjectHandle.Unwrap para desencapsular el valor devuelto.

El contexto de activación se usa durante la activación basada en manifiesto para configurar la directiva de dominio y proporcionar un modelo de seguridad basado en la aplicación. La clase ActivationContext contiene un objeto ApplicationIdentity que proporciona acceso al manifiesto de aplicación. Para obtener más información, consulte la clase ApplicationSecurityManager.

Consulte también

Se aplica a

CreateInstance(AppDomain, String, String)

Crea una instancia del tipo cuyo nombre se especifica en el dominio remoto especificado, utilizando el ensamblado con nombre y el constructor sin 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

Dominio remoto donde se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado donde se busca el tipo denominado typeName. Si assemblyName es null, se busca el ensamblado en ejecución.

typeName
String

Nombre completo del tipo del que se va a crear una instancia de .

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null para las instancias de Nullable<T>.

Atributos

Excepciones

typeName o domain es null.

No se encontró ningún constructor público coincidente.

no se encontró typeName en assemblyName.

no se encontró assemblyName.

El autor de la llamada no tiene permiso para llamar a este constructor.

No se puede crear una instancia de un tipo abstracto.

-o-

Este miembro se invocó con un mecanismo de enlace en tiempo de ejecución.

El constructor, que se invocó a través de la reflexión, produjo una excepción.

El tipo COM no se obtuvo a través de GetTypeFromProgID o GetTypeFromCLSID.

No se admite la creación de TypedReference, ArgIterator, Voidy RuntimeArgumentHandle tipos o matrices de esos tipos.

assemblyName no es un ensamblado válido.

-o-

La versión 2.0 o posterior de Common Language Runtime (CLR) está cargada actualmente y assemblyName se compiló para una versión de CLR que es posterior a la versión cargada actualmente. Tenga en cuenta que las versiones 2.0, 3.0 y 3.5 de .NET Framework usan clR versión 2.0.

Un ensamblado o módulo se cargó dos veces con dos evidencias diferentes.

-o-

El nombre del ensamblado o la base de código no son válidos.

Comentarios

Use CreateInstance cuando un host necesite ejecutar código en un dominio de aplicación que tenga permisos de seguridad restringidos.

Use ObjectHandle.Unwrap para desencapsular el valor devuelto.

Se aplica a

CreateInstance<T>()

Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs
Source:
Activator.RuntimeType.cs

Crea una instancia del tipo designado por el parámetro de tipo genérico especificado mediante el constructor sin 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

Tipo que se va a crear.

Devoluciones

T

Referencia al objeto recién creado o null para las instancias de Nullable<T>.

Excepciones

No se puede crear una instancia de una clase abstracta o el tipo especificado para T no tiene un constructor sin parámetros.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable de , captura la excepción de clase base, MissingMemberException, en su lugar.

Comentarios

Los compiladores usan el método genérico CreateInstance<T>() para implementar la creación de instancias de tipos especificados por parámetros de tipo. Por ejemplo, en el siguiente método genérico, la implementación de new T() (gcnew T() en C++) usa el método genérico CreateInstance<T>().

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

En general, no hay ningún uso para el método genérico CreateInstance<T>() en el código de aplicación, ya que el tipo debe conocerse en tiempo de compilación. Si el tipo se conoce en tiempo de compilación, se puede usar la sintaxis de creación de instancias normal (new operador en C#, New en Visual Basic, gcnew en C++). Si el tipo no se conoce en tiempo de compilación, puede llamar a una sobrecarga no genérica de CreateInstance.

No hay sobrecargas del método genérico CreateInstance<T>() que toman listas de argumentos, ya que las sobrecargas no genéricas de CreateInstance ya proporcionan resolución de constructor enlazada en tiempo de ejecución.

Se aplica a