Assembly.CreateInstance Método

Definición

Localiza un tipo en este ensamblado y crea una instancia de dicho tipo mediante el activador del sistema.Locates a type from this assembly and creates an instance of it using the system activator.

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.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

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.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance (string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

Parámetros

typeName
String

FullName del tipo que se va a localizar.The FullName of the type to locate.

Devoluciones

Instancia del tipo especificado creada con el constructor sin parámetros, o bien null si no se encuentra typeName.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. 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.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementaciones

Excepciones

typeName es una cadena vacía ("") o una cadena que comienza con un carácter nulo.typeName is an empty string ("") or a string beginning with a null character.

O bien-or- El ensamblado actual se ha cargado en el contexto de solo reflexión.The current assembly was loaded into the reflection-only context.

typeName es null.typeName is null.

No se encontró ningún constructor coincidente.No matching constructor was found.

typeName requiere un ensamblado dependiente que no se pudo encontrar.typeName requires a dependent assembly that could not be found.

typeName requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.typeName requires a dependent assembly that was found but could not be loaded.

O bien-or- El ensamblado actual se cargó en el contexto de solo reflexión y typeName requiere un ensamblado dependiente que no se haya cargado previamente.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido.typeName requires a dependent assembly, but the file is not a valid assembly.

O bien-or- typeName requiere un ensamblado dependiente que se compiló para una versión del tiempo de ejecución que es posterior a la versión cargada actualmente.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Ejemplos

En el ejemplo siguiente se define una clase Person y se llama al método CreateInstance(String) para crear una instancia de ella.The following example defines a Person class and calls the CreateInstance(String) method to instantiate it.

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 puede encontrar typeName en la instancia de Assembly, devuelve null en lugar de producir una excepción.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Esto puede ocurrir porque:This might happen because:

  • No ha especificado el nombre completo del tipo.You haven't specified the fully qualified name of the type.

  • Ha especificado el nombre de tipo completo, pero su caso no coincide con el caso de la propiedad Type.FullName del tipo.You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. Para una comparación sin distinción entre mayúsculas y minúsculas de typeName con el nombre completo del tipo, llame a la sobrecarga de CreateInstance(String, Boolean) y especifique true para el argumento de ignoreCase.For a case-insensitive comparison of typeName with the type's full name, call the CreateInstance(String, Boolean) overload and specify true for the ignoreCase argument.

  • El tipo no existe en la instancia de Assembly actual.The type doesn't exist in the current Assembly instance.

Seguridad

ReflectionPermission
Cuando se invoca enlazado en tiempo de ejecución mediante mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccessAssociated enumeration: MemberAccess

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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
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

typeName
String

FullName del tipo que se va a localizar.The FullName of the type to locate.

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.true to ignore the case of the type name; otherwise, false.

Devoluciones

Instancia del tipo especificado creada con el constructor sin parámetros, o bien null si no se encuentra typeName.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. 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.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementaciones

Excepciones

typeName es una cadena vacía ("") o una cadena que comienza con un carácter nulo.typeName is an empty string ("") or a string beginning with a null character.

O bien-or- El ensamblado actual se ha cargado en el contexto de solo reflexión.The current assembly was loaded into the reflection-only context.

No se encontró ningún constructor coincidente.No matching constructor was found.

typeName es null.typeName is null.

typeName requiere un ensamblado dependiente que no se pudo encontrar.typeName requires a dependent assembly that could not be found.

typeName requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.typeName requires a dependent assembly that was found but could not be loaded.

O bien-or- El ensamblado actual se cargó en el contexto de solo reflexión y typeName requiere un ensamblado dependiente que no se haya cargado previamente.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido.typeName requires a dependent assembly, but the file is not a valid assembly.

O bien-or- typeName requiere un ensamblado dependiente que se compiló para una versión del tiempo de ejecución que es posterior a la versión cargada actualmente.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Ejemplos

En el ejemplo siguiente se define una clase Person.The following example defines a Person class. A continuación, llama al método CreateInstance(String) para crear una instancia de él, pero como el uso de mayúsculas y minúsculas del argumento typeName no coincide con el de la propiedad FullName del tipo, el método devuelve null.It then calls the CreateInstance(String) method to instantiate it, but because the casing of the typeName argument doesn't match that of the type's FullName property, the method returns null. Cuando en el ejemplo se pasa la misma cadena a la sobrecarga CreateInstance(String, Boolean) y se especifica que la comparación no debe distinguir entre mayúsculas y minúsculas, se encuentra la clase Person y se crea una instancia correcta de un objeto Person.When the example passes the same string to the CreateInstance(String, Boolean) overload and specifies that the comparison should be case-insensitive, the Person class is found, and a Person object is successfully instantiated.

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 puede encontrar typeName en la instancia de Assembly, devuelve null en lugar de producir una excepción.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Esto puede ocurrir porque:This might happen because:

  • No ha especificado el nombre completo del tipo.You haven't specified the fully qualified name of the type.

  • El tipo no existe en la instancia de Assembly actual.The type doesn't exist in the current Assembly instance.

Seguridad

ReflectionPermission
Cuando se invoca enlazado en tiempo de ejecución mediante mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccessAssociated enumeration: MemberAccess

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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

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 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

Parámetros

typeName
String

FullName del tipo que se va a localizar.The FullName of the type to locate.

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.true to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags

Máscara de bits que afecta al modo de realizar la búsqueda.A bitmask that affects the way in which the search is conducted. El valor es una combinación de marcadores de bits de BindingFlags.The value is a combination of bit flags from 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.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Si binder es null, se usa el enlazador predeterminado.If binder is null, the default binder is used.

args
Object[]

Matriz que contiene los argumentos que se pasarán al constructor.An array that contains the arguments to be passed to the 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.This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. Si se desea usar el constructor sin parámetros, args debe ser una matriz vacía o null.If the parameterless constructor is desired, args must be an empty array or null.

culture
CultureInfo

Instancia de CultureInfo usada para regir la conversión de tipos.An instance of CultureInfo used to govern the coercion of types. Si es null, se utiliza CultureInfo para el subproceso actual.If this is null, the CultureInfo for the current thread is used. (Esto es necesario para convertir un objeto String que representa 1000 en un valor Double , por ejemplo, dado que 1000 se representa de maneras diferentes según la referencia cultural).(This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)

activationAttributes
Object[]

Matriz de uno o más atributos que puede participar en la activación.An array of one or more attributes that can participate in activation. Normalmente, una matriz que contiene un único objeto UrlAttribute que especifica la dirección URL necesaria para activar un objeto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. Este parámetro está relacionado con los objetos activados por el cliente.This parameter is related to client-activated objects. 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.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Las aplicaciones distribuidas deberían usar Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Devoluciones

Instancia del tipo especificado, o null si no se encuentra typeName.An instance of the specified type, or null if typeName is not found. Los argumentos proporcionados se utilizan para resolver el tipo y para enlazar el constructor que se utiliza para crear la instancia.The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

Implementaciones

Excepciones

typeName es una cadena vacía ("") o una cadena que comienza con un carácter nulo.typeName is an empty string ("") or a string beginning with a null character.

o bien-or- El ensamblado actual se ha cargado en el contexto de solo reflexión.The current assembly was loaded into the reflection-only context.

El valor de typeName es null.typeName is null.

No se encontró ningún constructor coincidente.No matching constructor was found.

Una matriz de atributos de activación no vacía se pasa a un tipo que no hereda de MarshalByRefObject.A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

typeName requiere un ensamblado dependiente que no se pudo encontrar.typeName requires a dependent assembly that could not be found.

typeName requiere un ensamblado dependiente que se encontró, pero no se pudo cargar.typeName requires a dependent assembly that was found but could not be loaded.

O bien-or- El ensamblado actual se cargó en el contexto de solo reflexión y typeName requiere un ensamblado dependiente que no se haya cargado previamente.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName requiere un ensamblado dependiente, pero el archivo no es un ensamblado válido.typeName requires a dependent assembly, but the file is not a valid assembly.

O bien-or- typeName requiere un ensamblado dependiente compilado para una versión del sistema en tiempo de ejecución posterior a la versión cargada actualmente.typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

Seguridad

ReflectionPermission
Cuando se invoca enlazado en tiempo de ejecución mediante mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
para crear una instancia de un delegado.to create an instance of a delegate. Enumeración asociada: UnmanagedCodeAssociated enumeration: UnmanagedCode

Se aplica a