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 utilizando el constructor que mejor coincida con los parámetros especificados.
Sobrecargas
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) |
Obsoleto.
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) |
Obsoleto.
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
- 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
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
- 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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
Use ObjectHandle.Unwrap para desencapsular el valor devuelto.
Se aplica a
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.
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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[])
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 creado recientemente.
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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
Nota
A partir de .NET Framework 2.0, este método se puede usar para acceder 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)
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 creado recientemente.
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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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[])
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 creado recientemente.
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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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 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[])
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
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
El método devuelve null
para las Nullable<T> instancias.
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
- 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
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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[])
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 creado recientemente.
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 Windows aplicaciones de la Tienda 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 Windows aplicaciones de la Tienda 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.
El método devuelve null
para las Nullable<T> instancias sin ningún valor.
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 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)
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 creado recientemente.
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
El método devuelve null
para las Nullable<T> instancias.
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)
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
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
El método devuelve null
para las Nullable<T> instancias.
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 debe desajustarse para obtener acceso al objeto recién creado.
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)
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 creado recientemente.
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 Windows aplicaciones de la Tienda 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 Windows aplicaciones de la Tienda 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.
El método devuelve null
para las Nullable<T> instancias.
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 del mismo. (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 debe desajustarse para obtener acceso al objeto recién creado.
Comentarios
El método devuelve null
para las Nullable<T> instancias.
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 debe desempaquetarse para obtener acceso a la instancia recién creada.
- 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
El método devuelve null
para las Nullable<T> instancias.
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>()
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 creado recientemente.
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 Windows aplicaciones de la Tienda o la biblioteca de clases portable, capture 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 siguiente método genérico, 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 constructor enlazada en tiempo de CreateInstance ejecución.