Activator.CreateInstance Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.