Activator.CreateInstance Método

Definición

Crea una instancia del tipo especificado utilizando el constructor que mejor coincida 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 indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a 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 indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a los parámetros especificados.

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

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

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

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

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

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

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

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

CreateInstance(String, String, Object[])

Crea una instancia del tipo cuyo nombre se especifica, usando 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, usando el ensamblado con nombre y el constructor que mejor coincida con los parámetros especificados.

CreateInstance(Type, Object[])

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

CreateInstance(Type, Boolean)

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

CreateInstance(String, String)

Crea una instancia del tipo cuyo nombre se especifica, usando 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 activada con los datos de activación personalizados especificados.

CreateInstance(Type)

Crea una instancia del tipo especificado usando 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 indicado, usando 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, usando 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 indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a 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 en el que se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

ignoreCase
Boolean

true para especificar que en la búsqueda de typeName no se distingue entre mayúsculas y minúsculas; false para especificar que en la búsqueda se tenga en cuenta el uso de mayúsculas y minúsculas.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede participar en la activación. Normalmente, una matriz que contiene un solo objeto UrlAttribute. El atributo UrlAttribute especifica la dirección URL necesaria para activar un objeto remoto.

securityAttributes
Evidence

Información usada para tomar decisiones sobre la 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 llamador no tiene permiso para llamar a este constructor.

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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 indicado, usando el ensamblado con nombre y el constructor que se adapta mejor a 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 en el que se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

ignoreCase
Boolean

true para especificar que en la búsqueda de typeName no se distingue entre mayúsculas y minúsculas; false para especificar que en la búsqueda se tenga en cuenta el uso de mayúsculas y minúsculas.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null , por Nullable<T> ejemplo, 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 llamador no tiene permiso para llamar a este constructor.

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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, usando el ensamblado con nombre y el constructor que mejor coincida 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 en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

ignoreCase
Boolean

true para especificar que en la búsqueda de typeName no se distingue entre mayúsculas y minúsculas; false para especificar que en la búsqueda se tenga en cuenta el uso de mayúsculas y minúsculas.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para acceder a la instancia recién creada o null para Nullable<T> instancias 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 llamador no tiene permiso para llamar a este constructor.

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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 ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 utilizando el constructor que mejor coincida 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 del objeto que se va a crear.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían 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 bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

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

El llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó mediante 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 usado 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 utilizando el constructor que mejor coincida 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 del objeto que se va a crear.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

Información específica de la referencia cultural que controla la conversión de args en los tipos formales declarados para el constructor de type. Si culture es null, se usa CultureInfo del 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 bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

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

El llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó mediante 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 usado 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 utilizando el constructor que mejor coincida 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 del objeto que se va a crear.

args
Object[]

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían 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 bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

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

El llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó mediante 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 usado 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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, usando 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 en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían usar Windows Communication Foundation.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null , por Nullable<T> ejemplo, .

Excepciones

typeName es null.

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

No se encontró typename en assemblyName.

No se encontró assemblyName.

El llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó mediante 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 tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

activationAttributes no es una matriz UrlAttribute

.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

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

El constructor invocado produce una excepción.

O bien

Se produjo un 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 ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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, usando el ensamblado con nombre y el constructor que mejor coincida 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 en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

ignoreCase
Boolean

true para especificar que en la búsqueda de typeName no se distingue entre mayúsculas y minúsculas; false para especificar que en la búsqueda se tenga en cuenta el uso de mayúsculas y minúsculas.

bindingAttr
BindingFlags

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

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 tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (constructor sin parámetros).

culture
CultureInfo

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

activationAttributes
Object[]

Matriz de uno o más atributos que puede 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 por parte del cliente es una tecnología heredada que se conserva por compatibilidad con versiones anteriores, pero no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas deberían usar Windows Communication Foundation.

securityInfo
Evidence

Información usada para tomar decisiones sobre la 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 llamador no tiene permiso para llamar a este constructor.

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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 ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 utilizando el constructor que mejor coincida 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 del objeto que se va a crear.

args
Object[]

Matriz de argumentos que coinciden en número, orden y tipo con los parámetros del constructor al que se va a invocar. Si args es una matriz vacía o null, se invoca al constructor que no toma parámetros (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 bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

o bien

El constructor que más se aproxima a args tiene argumentos varargs.

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

El llamador no tiene permiso para llamar a este constructor.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable, capture 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ó mediante 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, capture la excepción de clase base, MissingMemberException, en su lugar.

type es un objeto COM, pero el identificador de clase usado 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 CreateInstance(Type, Object[]) método para crear un String objeto . Llama al String.String(Char[], Int32, Int32) constructor 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 String constructor. A continuación, el ejemplo pasa cada matriz al CreateInstance(Type, Object[]) método 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 usando 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 del objeto que se va a crear.

nonPublic
Boolean

true si puede haber coincidencias de constructores sin parámetros públicos o no públicos; false si solo puede haber coincidencias de constructores sin parámetros públicos.

Devoluciones

Referencia al objeto recién creado o null , por Nullable<T> ejemplo, .

Excepciones

type es null.

type no es un RuntimeType.

o bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

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

El llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de una clase abstracta o este miembro se invocó mediante 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 usado 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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, usando 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 en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null , por Nullable<T> ejemplo, .

Excepciones

typeName es null.

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

No se encontró typename en assemblyName.

No se encontró assemblyName.

El llamador no tiene permiso para llamar a este constructor.

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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 Person clase 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 CreateInstance(String, String) método para crear instancias de la Person clase . Requiere que se agregue una referencia a PersonInfo.dll al proyecto. Dado que el CreateInstance(String, String) método llama al Person constructor sin parámetros de clase, el ejemplo asigna un valor a su Name propiedad .

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, CreateInstance se llama con frecuencia 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 en tiempo de ejecución a los miembros del tipo. Para solucionar esta limitación, en el ejemplo siguiente se usa el método junto con la CreateInstance reflexión para asignar un valor a la Person propiedad del Name objeto 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 los ensamblados, consulte How the Runtime Locates Assemblies(Cómo localiza el runtime). Para obtener información sobre el uso del archivo de configuración de la aplicación para definir ubicaciones de ensamblado, vea Especificar la ubicación de un ensamblado. Si assemblyName se encuentra, 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 ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 activada 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 los datos de activación personalizados.

Devoluciones

Identificador que se debe desencapsular para tener acceso al objeto recién creado o null , por Nullable<T> ejemplo, .

Comentarios

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

El contexto de activación se usa durante la activación basada en manifiestos para configurar la directiva de dominio y para proporcionar un modelo de seguridad basado en la aplicación. La ActivationContext clase contiene un ApplicationIdentity objeto que proporciona acceso al manifiesto de aplicación. Para obtener más información, vea 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 usando 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 del objeto que se va a crear.

Devoluciones

Referencia al objeto recién creado o null , por Nullable<T> ejemplo, .

Excepciones

type es null.

type no es un RuntimeType.

o bien

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

type no puede ser un TypeBuilder.

o bien

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

o bien

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

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

El llamador no tiene permiso para llamar a este constructor.

Nota: En .NET para aplicaciones de la Tienda Windows o la biblioteca de clases portable, capture 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ó mediante 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, capture la excepción de clase base, MissingMemberException, en su lugar.

type es un objeto COM, pero el identificador de clase usado 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 CreateInstance(Type) método . 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 se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca 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 la 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 , por Nullable<T> ejemplo, .

Comentarios

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

El contexto de activación se usa durante la activación basada en manifiestos para configurar la directiva de dominio y para proporcionar un modelo de seguridad basado en la aplicación. La ActivationContext clase contiene un ApplicationIdentity objeto que proporciona acceso al manifiesto de aplicación. Para obtener más información, vea 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 indicado, usando 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 en el que se crea el tipo denominado typeName.

assemblyName
String

Nombre del ensamblado en el que se busca el tipo denominado typeName. Si assemblyName es null, se busca en el ensamblado que se está ejecutando.

typeName
String

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

Devoluciones

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

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 llamador no tiene permiso para llamar a este constructor.

No se puede crear una instancia de un tipo abstracto.

o bien

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

El constructor, que se invocó mediante reflexión, inició una excepción.

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

No se admite la creación de tipos TypedReference, ArgIterator, Void y RuntimeArgumentHandle, ni de matrices de estos tipos.

assemblyName no es un ensamblado válido.

o bien

Common Language Runtime (CLR) 2.0 o una versión posterior está cargado actualmente y assemblyName se compiló para una versión de CLR 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.

Se cargó un ensamblado o módulo dos veces con dos evidencias diferentes.

o bien

El nombre o la base de código del ensamblado 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, usando 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 , por Nullable<T> ejemplo, .

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, detecte la excepción de clase base, MissingMemberException, en su lugar.

Comentarios

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

public:
    generic <typename T> where T:gcnew()
    static T Bar()
    {
        return gcnew T();
    }
public static T Factory<T>() where T : new()
{
    return new T();
}
let factory<'T when 'T : (new: unit -> 'T)> =
    new 'T()
Public Shared Function Factory(Of T As New)() As T
    Return New T()
End Function

En general, no hay ningún uso para el método genérico en el CreateInstance<T>() 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 CreateInstance<T>() método genérico que toman listas de argumentos, ya que las sobrecargas no genéricas de ya proporcionan resolución de constructores enlazados en tiempo de CreateInstance ejecución.

Se aplica a