Assembly.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í.
Localiza un tipo en este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema.
Sobrecargas
CreateInstance(String) |
Localiza el tipo especificado en este ensamblado y crea una instancia del tipo mediante el activador del sistema, realizando una búsqueda en la que se distingue entre mayúsculas y minúsculas. |
CreateInstance(String, Boolean) |
Ubica el tipo especificado de este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema, con búsqueda de mayúsculas y minúsculas opcional. |
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Ubica el tipo especificado en este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema, con búsqueda de mayúsculas y minúsculas opcional y con los atributos de referencia cultural, argumentos, enlace y activación. |
CreateInstance(String)
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Localiza el tipo especificado en este ensamblado y crea una instancia del tipo mediante el activador del sistema, realizando una búsqueda en la que se distingue entre mayúsculas y minúsculas.
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object? CreateInstance (string typeName);
public object CreateInstance (string typeName);
member this.CreateInstance : string -> obj
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object
Parámetros
Devoluciones
Instancia del tipo especificado creada con el constructor sin parámetros, o bien null
si no se encuentra typeName
. El tipo se resuelve usando el enlazador predeterminado, sin especificar atributos de activación o referencia cultural, y con el objeto BindingFlags establecido en Public
o Instance
.
Implementaciones
Excepciones
typeName
es una cadena vacía ("") o una cadena que comienza con un carácter nulo.
o bien
El ensamblado actual se ha cargado en el contexto de solo reflexión.
typeName
es null
.
No se encontró ningún constructor coincidente.
typeName
requiere un ensamblado dependiente que no se pudo encontrar.
typeName
requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.
o bien
El ensamblado actual se cargó en el contexto de solo reflexión y typeName
requiere un ensamblado dependiente que no se haya cargado previamente.
typeName
requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido para el tiempo de ejecución cargado actualmente.
Ejemplos
En el ejemplo siguiente se define una Person
clase y se llama al CreateInstance(String) método para crear una instancia de ella.
using System;
using System.Reflection;
using Contoso.Libraries;
namespace Contoso.Libraries
{
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;
}
}
}
public class Example
{
public static void Main()
{
Assembly assem = typeof(Person).Assembly;
Person p = (Person) assem.CreateInstance("Contoso.Libraries.Person");
if (! (p == null)) {
p.Name = "John";
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p);
}
else {
Console.WriteLine("Unable to instantiate a Person object.");
}
}
}
// The example displays the following output:
// Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries
Namespace Contoso.Libraries
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
End Namespace
Module Example
Public Sub Main()
Dim assem As Assembly = GetType(Person).Assembly
Dim p As Person = CType(assem.CreateInstance("Contoso.Libraries.Person"),
Person)
If p IsNot Nothing Then
p.Name = "John"
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p)
Else
Console.WriteLine("Unable to instantiate a Person object.")
End If
End Sub
End Module
' The example displays the following output:
' Instantiated a Person object whose value is 'John'
Comentarios
Si el tiempo de ejecución no se encuentra typeName
en la Assembly instancia, devuelve null
en lugar de iniciar una excepción. Esto puede ocurrir porque:
No ha especificado el nombre completo del tipo.
Ha especificado el nombre de tipo completo, pero su caso no coincide con el caso de la propiedad del Type.FullName tipo. Para una comparación sin distinción entre mayúsculas y minúsculas de
typeName
con el nombre completo del tipo, llame a la CreateInstance(String, Boolean) sobrecarga y especifiquetrue
para elignoreCase
argumento .El tipo no existe en la instancia actual Assembly .
Se aplica a
CreateInstance(String, Boolean)
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Ubica el tipo especificado de este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema, con búsqueda de mayúsculas y minúsculas opcional.
public:
System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object? CreateInstance (string typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
member this.CreateInstance : string * bool -> obj
abstract member CreateInstance : string * bool -> obj
override this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object
Parámetros
- ignoreCase
- Boolean
Es true
para no hacer distinción entre mayúsculas y minúsculas en el nombre del tipo; en caso contrario, es false
.
Devoluciones
Instancia del tipo especificado creada con el constructor sin parámetros, o bien null
si no se encuentra typeName
. El tipo se resuelve usando el enlazador predeterminado, sin especificar atributos de activación o referencia cultural, y con el objeto BindingFlags establecido en Public
o Instance
.
Implementaciones
Excepciones
typeName
es una cadena vacía ("") o una cadena que comienza con un carácter nulo.
o bien
El ensamblado actual se ha cargado en el contexto de solo reflexión.
No se encontró ningún constructor coincidente.
typeName
es null
.
typeName
requiere un ensamblado dependiente que no se pudo encontrar.
typeName
requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.
o bien
El ensamblado actual se cargó en el contexto de solo reflexión y typeName
requiere un ensamblado dependiente que no se haya cargado previamente.
typeName
requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido para el tiempo de ejecución cargado actualmente.
Ejemplos
En el ejemplo siguiente se define una clase Person
. A continuación, llama al CreateInstance(String) método para crear una instancia de él, pero porque el uso de mayúsculas y minúsculas del typeName
argumento no coincide con el de la propiedad del FullName tipo, el método devuelve null
. Cuando el ejemplo pasa la misma cadena a la CreateInstance(String, Boolean) sobrecarga y especifica que la comparación debe no distinguir mayúsculas de minúsculas, se encuentra la Person
clase y se crea una instancia correcta de un Person
objeto.
using System;
using System.Reflection;
using Contoso.Libraries;
namespace Contoso.Libraries
{
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;
}
}
}
public class Example
{
public static void Main()
{
String fullName = "contoso.libraries.person";
Assembly assem = typeof(Person).Assembly;
Person p = (Person) assem.CreateInstance(fullName);
if (! (p == null)) {
p.Name = "John";
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p);
}
else {
Console.WriteLine("Unable to instantiate a Person object " +
"with Assembly.CreateInstance(String)");
// Try case-insensitive type name comparison.
p = (Person) assem.CreateInstance(fullName, true);
if (! (p == null)) {
p.Name = "John";
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p);
}
else {
Console.WriteLine("Unable to instantiate a {0} object.",
fullName);
}
}
}
}
// The example displays the following output:
// Unable to instantiate a Person object with Assembly.CreateInstance(String)
// Instantiated a Person object whose value is 'John'
Imports System.Reflection
Imports Contoso.Libraries
Namespace Contoso.Libraries
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
End Namespace
Module Example
Public Sub Main()
Dim fullName As String = "contoso.libraries.person"
Dim assem As Assembly = GetType(Person).Assembly
Dim p As Person = CType(assem.CreateInstance(fullName),
Person)
If p IsNot Nothing Then
p.Name = "John"
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p)
Else
Console.WriteLine("Unable to instantiate a Person object" +
"with Assembly.CreateInstance(String)")
' Try case-insensitive type name comparison.
p = CType(assem.CreateInstance(fullName, true), Person)
If p IsNot Nothing Then
p.Name = "John"
Console.WriteLine("Instantiated a {0} object whose value is '{1}'",
p.GetType().Name, p)
Else
Console.WriteLine("Unable to instantiate a {0} object.",
fullName)
End If
End If
End Sub
End Module
' The example displays the following output:
' Unable to instantiate a Person object with Assembly.CreateInstance(String)
' Instantiated a Person object whose value is 'John'
Comentarios
Si el tiempo de ejecución no se encuentra typeName
en la Assembly instancia, devuelve null
en lugar de iniciar una excepción. Esto puede ocurrir porque:
No ha especificado el nombre completo del tipo.
El tipo no existe en la instancia actual Assembly .
Se aplica a
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Ubica el tipo especificado en este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema, con búsqueda de mayúsculas y minúsculas opcional y con los atributos de referencia cultural, argumentos, enlace y activación.
public:
virtual System::Object ^ CreateInstance(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 virtual object? CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object[]? args, System.Globalization.CultureInfo? culture, object[]? activationAttributes);
public virtual object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
public object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
abstract member CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
override this.CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
Public Overridable Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Public Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Parámetros
- ignoreCase
- Boolean
Es true
para no hacer distinción entre mayúsculas y minúsculas en el nombre del tipo; en caso contrario, es false
.
- bindingAttr
- BindingFlags
Máscara de bits que afecta al modo de realizar la búsqueda. El valor es una combinación de marcadores de bits de BindingFlags.
- binder
- Binder
Objeto que habilita el enlace, la conversión de tipos de argumentos, las llamadas a miembros y la recuperación de objetos MemberInfo
mediante reflexión. Si binder
es null
, se usa el enlazador predeterminado.
- args
- Object[]
Matriz que contiene los argumentos que se pasarán al constructor. Esta matriz de argumentos debe coincidir en número, orden y tipo con los parámetros del constructor al que se va a invocar. Si se desea usar el constructor sin parámetros, args
debe ser una matriz vacía o null
.
- culture
- CultureInfo
Instancia de CultureInfo
usada para regir la conversión de tipos. Si es null
, se utiliza CultureInfo para el subproceso actual. (Esto es necesario para convertir una cadena que representa 1000 en un valor Double, por ejemplo, dado que 1000 se representa de maneras diferentes según la referencia cultural).
- activationAttributes
- Object[]
Matriz de uno o más atributos que puede participar en la activación. Normalmente, 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
Instancia del tipo especificado, o null
si no se encuentra typeName
. Los argumentos proporcionados se utilizan para resolver el tipo y para enlazar el constructor que se utiliza para crear la instancia.
Implementaciones
Excepciones
typeName
es una cadena vacía ("") o una cadena que comienza con un carácter nulo.
o bien
El ensamblado actual se ha cargado en el contexto de solo reflexión.
typeName
es null
.
No se encontró ningún constructor coincidente.
Una matriz de atributos de activación no vacía se pasa a un tipo que no hereda de MarshalByRefObject.
typeName
requiere un ensamblado dependiente que no se pudo encontrar.
typeName
requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.
o bien
El ensamblado actual se cargó en el contexto de solo reflexión y typeName
requiere un ensamblado dependiente que no se haya cargado previamente.
typeName
requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido para el tiempo de ejecución cargado actualmente.