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
| Nombre | Description |
|---|---|
| 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 especificado ActivationContext 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 especificado ActivationContext . |
| 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 https://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 https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjectHandle CreateInstance(AppDomain domain, string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityAttributes);
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
[<System.Security.SecurityCritical>]
static member CreateInstance : AppDomain * string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (domain As AppDomain, assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityAttributes As Evidence) As ObjectHandle
Parámetros
- domain
- AppDomain
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 para especificar que la búsqueda typeName no distingue mayúsculas de minúsculas; false para 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 typeName constructor. 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 typeName constructor. 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 typeName constructor. Si culture es null, se usa para CultureInfo 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 UrlAttribute objeto. 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 , por Nullable<T> ejemplo, sin ningún valor.
- Atributos
Excepciones
domain o typeName es null.
No se encontró ningún constructor coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 para especificar que la búsqueda typeName no distingue mayúsculas de minúsculas; false para 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 typeName constructor. 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 typeName constructor. 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 typeName constructor. Si culture es null, se usa para CultureInfo 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 UrlAttribute objeto 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 , por Nullable<T> ejemplo, sin ningún valor.
- Atributos
Excepciones
domain o typeName es null.
No se encontró ningún constructor coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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
- 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object?[]? args, System.Globalization.CultureInfo? culture, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As ObjectHandle
Parámetros
- assemblyName
- String
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 para especificar que la búsqueda typeName no distingue mayúsculas de minúsculas; false para 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 typeName constructor. 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 typeName constructor. 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 typeName constructor. Si culture es null, se usa para CultureInfo 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 UrlAttribute objeto 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 Nullable<T> instancias sin ningún valor.
- Atributos
Excepciones
typeName es null.
No se encontró ningún constructor coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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.
En .NET Core 3.0 y versiones posteriores, las cargas de ensamblado desencadenadas por esta API se ven afectadas por el valor actual de AssemblyLoadContext.CurrentContextualReflectionContext.
Nota
Este método se puede usar para crear tipos y miembros 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 y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para la reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.
Se aplica a
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- 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 type constructor. 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 type constructor. 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 type constructor. Si culture es null, se usa para CultureInfo 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 UrlAttribute objeto 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 , por Nullable<T> ejemplo, sin ningún valor.
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 GetTypeFromProgID de 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
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 ReflectionPermissionFlag.RestrictedMemberAccess marca y si el conjunto de concesión de los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para la reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.
Se aplica a
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo)
- Source:
- Activator.cs
- Source:
- Activator.cs
- Source:
- Activator.cs
- 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 type constructor. 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 type constructor. 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 type constructor. Si culture es null, se usa para CultureInfo el subproceso actual.
Devoluciones
Referencia al objeto recién creado o null , por Nullable<T> ejemplo, sin ningún valor.
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 GetTypeFromProgID de 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
Este método se puede usar para tener acceso a los tipos y miembros no públicos si se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para la reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.
Se aplica a
CreateInstance(Type, Object[], Object[])
- Source:
- Activator.cs
- Source:
- Activator.cs
- Source:
- Activator.cs
- 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 UrlAttribute objeto 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 , por Nullable<T> ejemplo, sin ningún valor.
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 GetTypeFromProgID de 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
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[])
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName, object?[]? activationAttributes);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, object[] activationAttributes);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string * obj[] -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, activationAttributes As Object()) As ObjectHandle
Parámetros
- assemblyName
- String
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 UrlAttribute objeto 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 , por Nullable<T> ejemplo, .
- Atributos
Excepciones
typeName es null.
No se encontró ningún constructor público coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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.
En .NET Core 3.0 y versiones posteriores, las cargas de ensamblado desencadenadas por esta API se ven afectadas por el valor actual de AssemblyLoadContext.CurrentContextualReflectionContext.
Nota
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 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 https://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 https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes, System.Security.Policy.Evidence securityInfo);
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
[<System.Obsolete("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See https://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member CreateInstance : string * string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] * System.Security.Policy.Evidence -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object(), securityInfo As Evidence) As ObjectHandle
Parámetros
- assemblyName
- String
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 para especificar que la búsqueda typeName no distingue mayúsculas de minúsculas; false para 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 typeName constructor. 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 typeName constructor. 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 typeName constructor. Si culture es null, se usa para CultureInfo 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 UrlAttribute objeto 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 , por Nullable<T> ejemplo, sin ningún valor.
- Atributos
Excepciones
typeName es null.
No se encontró ningún constructor coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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
Este método se puede usar para crear tipos y miembros 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 y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para la reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.
Se aplica a
CreateInstance(Type, Object[])
- Source:
- Activator.cs
- Source:
- Activator.cs
- Source:
- Activator.cs
- 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 , por Nullable<T> ejemplo, sin ningún valor.
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 GetTypeFromProgID de 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.
Ejemplos
En el ejemplo siguiente se llama al CreateInstance(Type, Object[]) método para crear un String objeto . Llama al String.String(Char[], Int32, Int32) constructor para crear una instancia de una cadena que contiene diez elementos de una matriz de caracteres a partir de la decimocuarta posición.
using System;
public class Example
{
public static void Main()
{
// Initialize array of characters from a to z.
char[] chars = new char[26];
for (int ctr = 0; ctr < 26; ctr++)
chars[ctr] = (char) (ctr + 0x0061);
object obj = Activator.CreateInstance(typeof(string),
new object[] { chars, 13, 10 } );
Console.WriteLine(obj);
}
}
// The example displays the following output:
// nopqrstuvw
open System
// Initialize array of characters from a to z.
let chars = [| 'a' .. 'z' |]
let obj = Activator.CreateInstance(typeof<string>, chars[13..22])
printfn $"{obj}"
// The example displays the following output:
// nopqrstuvw
Module Example
Public Sub Main()
' Initialize array of characters from a to z.
Dim chars(25) As Char
For ctr As Short = 0 To 25
chars(ctr) = ChrW(ctr + &h0061)
Next
Dim obj As Object = Activator.CreateInstance(GetType(String),
{ chars, 13, 10 })
Console.WriteLine(obj)
End Sub
End Module
' The example displays the following output:
' nopqrstuvw
En el ejemplo siguiente se crea una matriz escalonada cuyos elementos son argumentos que se van a pasar a un String constructor. A continuación, el ejemplo pasa cada matriz al CreateInstance(Type, Object[]) método para invocar el constructor de cadena adecuado.
using System;
public class Example
{
public static void Main()
{
char[] characters = { 'a', 'b', 'c', 'd', 'e', 'f' };
object[][] arguments = new object[3][] { new object[] { characters },
new object[] { characters, 1, 4 },
new object[] { characters[1], 20 } };
for (int ctr = 0; ctr <= arguments.GetUpperBound(0); ctr++) {
object[] args = arguments[ctr];
object result = Activator.CreateInstance(typeof(string), args);
Console.WriteLine("{0}: {1}", result.GetType().Name, result);
}
}
}
// The example displays the following output:
// String: abcdef
// String: bcde
// String: bbbbbbbbbbbbbbbbbbbb
open System
let chars = [| 'a' .. 'f' |]
let arguments =
[| chars
chars[1..4]
Array.create 20 chars[1] |]
for args in arguments do
let result =
Activator.CreateInstance(typeof<string>, args)
printfn $"{result.GetType().Name}: {result}"
// The example displays the following output:
// String: abcdef
// String: bcde
// String: bbbbbbbbbbbbbbbbbbbb
Module Example
Public Sub Main()
Dim characters() As Char = { "a"c, "b"c, "c"c, "d"c, "e"c, "f"c }
Dim arguments()() As Object = new Object(2)() { New Object() { characters },
New Object() { characters, 1, 4 },
New Object() { characters(1), 20 } }
For ctr As Integer = 0 To arguments.GetUpperBound(0)
Dim args() As Object = arguments(ctr)
Dim result As Object = Activator.CreateInstance(GetType(String), args)
Console.WriteLine("{0}: {1}", result.GetType().Name, result)
Next
End Sub
End Module
' The example displays the following output:
' String: abcdef
' String: bcde
' String: bbbbbbbbbbbbbbbbbbbb
Comentarios
El constructor que se va a invocar debe ser accesible y debe proporcionar la coincidencia más específica con la lista de argumentos especificada.
Nota
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)
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- 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 , por Nullable<T> ejemplo, .
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 GetTypeFromProgID de 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
Este método se puede usar para tener acceso a los tipos y miembros no públicos si se ha concedido ReflectionPermission al autor de la llamada con la ReflectionPermissionFlag.RestrictedMemberAccess marca y si el conjunto de concesión del ensamblado que contiene los tipos y miembros no públicos está restringido al conjunto de concesión del autor de la llamada o a un subconjunto de ellos. (Consulte Consideraciones de seguridad para la reflexión). Para usar esta funcionalidad, la aplicación debe tener como destino .NET Framework 3.5 o posterior.
Se aplica a
CreateInstance(String, String)
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- Source:
- Activator.RuntimeType.cs
- 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")]
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle? CreateInstance(string assemblyName, string typeName);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(string assemblyName, string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Type and its constructor could be removed")>]
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
static member CreateInstance : string * string -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (assemblyName As String, typeName As String) As ObjectHandle
Parámetros
- assemblyName
- String
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 , por Nullable<T> ejemplo, .
- Atributos
Excepciones
typeName es null.
No se encontró ningún constructor público coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 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 una referencia a PersonInfo.dll que se agregue 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 a menudo 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 junto con la CreateInstance reflexión para asignar un valor a la Person propiedad del Name objeto y mostrar su valor.
using System;
using System.Reflection;
using System.Runtime.Remoting;
public class Example
{
public static void Main()
{
ObjectHandle handle = Activator.CreateInstance("PersonInfo", "Person");
object p = handle.Unwrap();
Type t = p.GetType();
PropertyInfo prop = t.GetProperty("Name");
if (prop != null)
prop.SetValue(p, "Samuel");
MethodInfo method = t.GetMethod("ToString");
object retVal = method.Invoke(p, null);
if (retVal != null)
Console.WriteLine(retVal);
}
}
// The example displays the following output:
// Samuel
open System
let handle =
Activator.CreateInstance("PersonInfo", "Person")
let p = handle.Unwrap()
let t = p.GetType()
let prop = t.GetProperty "Name"
if not (isNull prop) then
prop.SetValue(p, "Samuel")
let method = t.GetMethod "ToString"
let retVal = method.Invoke(p, null)
if not (isNull retVal) then
printfn $"{retVal}"
// The example displays the following output:
// Samuel
Imports System.Reflection
Imports System.Runtime.Remoting
Module Example
Public Sub Main()
Dim handle As ObjectHandle = Activator.CreateInstance("PersonInfo", "Person")
Dim p As Object = handle.Unwrap()
Dim t As Type = p.GetType()
Dim prop As PropertyInfo = t.GetProperty("Name")
if Not prop Is Nothing Then
prop.SetValue(p, "Samuel")
End If
Dim method As MethodInfo = t.GetMethod("ToString")
Dim retVal As Object = method.Invoke(p, Nothing)
If Not retVal Is Nothing Then
Console.WriteLine(retVal)
End If
End Sub
End Module
' The example displays the following output:
' Samuel
Comentarios
Use ObjectHandle.Unwrap para desencapsular el valor devuelto.
assemblyName puede ser cualquiera de las siguientes opciones:
Nombre simple de un ensamblado, sin su ruta de acceso o extensión de archivo. Por ejemplo, especificaría
TypeExtensionspara 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, consulte How the Runtime Locates Assemblies (Cómo localiza el tiempo de ejecución). Para obtener información sobre el uso del archivo de configuración de la aplicación para definir ubicaciones de ensamblado, consulte Especificación de la ubicación de un ensamblado. Si assemblyName se encuentra, se carga en el contexto predeterminado.
En .NET Core 3.0 y versiones posteriores, las cargas de ensamblado desencadenadas por esta API se ven afectadas por el valor actual de AssemblyLoadContext.CurrentContextualReflectionContext.
Nota
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 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, String[])
Crea una instancia del tipo designado por el objeto especificado ActivationContext 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 , por Nullable<T> ejemplo, .
Comentarios
Use el ObjectHandle.Unwrap método para desencapsular el valor devuelto.
El contexto de activación se usa durante la activación basada en manifiesto para configurar la directiva de dominio y proporcionar un modelo de seguridad basado en la aplicación. La ActivationContext clase contiene un ApplicationIdentity objeto que proporciona acceso al manifiesto de aplicación. Para obtener más información, vea la clase ApplicationSecurityManager.
Consulte también
Se aplica a
CreateInstance(Type)
- Source:
- Activator.cs
- Source:
- Activator.cs
- Source:
- Activator.cs
- 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 , por Nullable<T> ejemplo, .
Excepciones
type es null.
typeno es .RuntimeType
-o-
type es un tipo genérico abierto (es decir, la ContainsGenericParameters propiedad devuelve true).
typeno puede ser .TypeBuilder
-o-
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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 GetTypeFromProgID de 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.
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 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
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(ActivationContext)
Crea una instancia del tipo designado por el objeto especificado ActivationContext .
public:
static System::Runtime::Remoting::ObjectHandle ^ CreateInstance(ActivationContext ^ activationContext);
public static System.Runtime.Remoting.ObjectHandle CreateInstance(ActivationContext activationContext);
static member CreateInstance : ActivationContext -> System.Runtime.Remoting.ObjectHandle
Public Shared Function CreateInstance (activationContext As ActivationContext) As ObjectHandle
Parámetros
- activationContext
- ActivationContext
Objeto de contexto de activación que especifica el objeto que se va a crear.
Devoluciones
Identificador que se debe desencapsular para tener acceso al objeto recién creado o null , por Nullable<T> ejemplo, .
Comentarios
Use el ObjectHandle.Unwrap método para desencapsular el valor devuelto.
El contexto de activación se usa durante la activación basada en manifiesto para configurar la directiva de dominio y 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 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 , por Nullable<T> ejemplo, .
- Atributos
Excepciones
typeName o domain es null.
No se encontró ningún constructor público coincidente.
typeName no se encontró 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 GetTypeFromProgID de o GetTypeFromCLSID.
No se admite la creación de TypedReferencetipos , ArgIterator, Voidy RuntimeArgumentHandle 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
- 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>();
public static T CreateInstance<T>() where T : allows ref struct;
static member CreateInstance : unit -> 'T
Public Shared Function CreateInstance(Of T) () As T
Parámetros de tipo
- T
Tipo que se va a crear.
Devoluciones
Referencia al objeto recién creado o null , por Nullable<T> ejemplo, .
Excepciones
No se puede crear una instancia de una clase abstracta o el tipo especificado para T no tiene un constructor sin parámetros.
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() usa el CreateInstance<T>() método genérico.
public static T Factory<T>() where T : new()
{
return new T();
}
let factory<'T when 'T : (new: unit -> 'T)> =
new 'T()
Public Shared Function Factory(Of T As New)() As T
Return New T()
End Function
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). 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 que toman listas de CreateInstance<T>() argumentos, ya que las sobrecargas no genéricas de ya proporcionan resolución de constructores enlazados en tiempo de CreateInstance ejecución.