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í.
Busca un tipo de este ensamblado y crea una instancia de él mediante el activador del sistema.
Sobrecargas
| Nombre | Description |
|---|---|
| CreateInstance(String) |
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, mediante la búsqueda con distinción entre mayúsculas y minúsculas. |
| CreateInstance(String, Boolean) |
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, con búsqueda opcional con distinción entre mayúsculas y minúsculas. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, con una búsqueda opcional que distingue mayúsculas de minúsculas y tiene la referencia cultural, los argumentos y los atributos de enlace y activación especificados. |
CreateInstance(String)
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, mediante la búsqueda con distinción entre mayúsculas y minúsculas.
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName);
public object CreateInstance(string typeName);
public object? CreateInstance(string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string -> obj
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 creado con el constructor sin parámetros; o null si typeName no se encuentra. El tipo se resuelve mediante el enlazador predeterminado, sin especificar atributos de referencia cultural o activación, y con establecido Public en BindingFlags o Instance.
Implementaciones
- Atributos
Excepciones
typeName es una cadena vacía ("") o una cadena que comienza con un carácter NULL.
O bien
El ensamblado actual se cargó 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 producir 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
typeNamecon el nombre completo del tipo, llame a la CreateInstance(String, Boolean) sobrecarga y especifiquetruepara elignoreCaseargumento .El tipo no existe en la instancia actual Assembly .
Se aplica a
CreateInstance(String, Boolean)
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, con búsqueda opcional con distinción entre mayúsculas y minúsculas.
public:
System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName, bool ignoreCase);
public object CreateInstance(string typeName, bool ignoreCase);
public object? CreateInstance(string typeName, bool ignoreCase);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string * bool -> obj
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
true para pasar por alto el caso del nombre de tipo; de lo contrario, false.
Devoluciones
Instancia del tipo especificado creado con el constructor sin parámetros; o null si typeName no se encuentra. El tipo se resuelve mediante el enlazador predeterminado, sin especificar atributos de referencia cultural o activación, y con establecido Public en BindingFlags o Instance.
Implementaciones
- Atributos
Excepciones
typeName es una cadena vacía ("") o una cadena que comienza con un carácter NULL.
O bien
El ensamblado actual se cargó 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 Person clase . 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 producir 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
- Source:
- Assembly.cs
- Source:
- Assembly.cs
Busca el tipo especificado de este ensamblado y crea una instancia de él mediante el activador del sistema, con una búsqueda opcional que distingue mayúsculas de minúsculas y tiene la referencia cultural, los argumentos y los atributos de enlace y activación especificados.
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
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 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
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
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
true para pasar por alto el caso del nombre de tipo; de lo contrario, false.
- bindingAttr
- BindingFlags
Máscara de bits que afecta a la forma en que se realiza la búsqueda. El valor es una combinación de marcas de bits de BindingFlags.
- binder
- Binder
Objeto que permite el enlace, la coerción de tipos de argumentos, la invocación de miembros y la recuperación de objetos a través de MemberInfo la reflexión. Si binder es null, se usa el enlazador predeterminado.
- args
- Object[]
Matriz que contiene los argumentos que se van a pasar al constructor. Esta matriz de argumentos debe coincidir en número, orden y escriba los parámetros del constructor que se va a invocar. Si se desea el constructor sin parámetros, args debe ser una matriz vacía o null.
- culture
- CultureInfo
Instancia de CultureInfo usada para controlar la coerción de tipos. Si es null, se usa para CultureInfo el subproceso actual. (Esto es necesario para convertir una cadena que representa 1000 a un Double valor, por ejemplo, ya que 1000 se representa de forma diferente por referencias culturales diferentes).
- activationAttributes
- Object[]
Matriz de uno o varios atributos que pueden participar en la activación. Normalmente, 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
Instancia del tipo especificado o null si typeName no se encuentra. Los argumentos proporcionados se usan para resolver el tipo y para enlazar el constructor que se usa para crear la instancia.
Implementaciones
- Atributos
Excepciones
typeName es una cadena vacía ("") o una cadena que comienza con un carácter NULL.
O bien
El ensamblado actual se cargó 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.