Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Method

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) CreateInstance(String) CreateInstance(String) 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) CreateInstance(String, Boolean) CreateInstance(String, Boolean) 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[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 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) CreateInstance(String) CreateInstance(String) 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 String String 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 predeterminado, o null si no se encuentra typeName.An instance of the specified type created with the default 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 por 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 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 un Person clase y llama a la CreateInstance(String) método para crear instancias 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 no puede encontrar el tiempo de ejecución typeName en el Assembly de instancia, 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 podría deberse a que: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 que el tipo Type.FullName propiedad.You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. Para obtener una comparación entre mayúsculas y minúsculas de typeName con el nombre del tipo completo, llame a la CreateInstance(String, Boolean) sobrecarga y especifique true para el ignoreCase argumento.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 clase Assembly instancia.The type doesn't exist in the current Assembly instance.

Seguridad

ReflectionPermission
Cuando se invoca en tiempo de ejecución a través de 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) CreateInstance(String, Boolean) CreateInstance(String, Boolean) 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 String String String

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

ignoreCase
Boolean Boolean Boolean 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 predeterminado, o null si no se encuentra typeName.An instance of the specified type created with the default 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 por un carácter nulo.typeName is an empty string ("") or a string beginning with a null character.

O bien-or- El ensamblado actual se cargó 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 requiere un ensamblado dependiente que no se ha encontrado.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 un Person clase.The following example defines a Person class. A continuación, llama el CreateInstance(String) método para crear instancias de él, pero dado que las mayúsculas y minúsculas de la typeName argumento no coincide con el tipo de FullName propiedad, 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 el ejemplo pasa la misma cadena a la CreateInstance(String, Boolean) sobrecarga y especifica que la comparación debe ser entre mayúsculas y minúsculas, el Person se encuentra la clase y un Person correctamente se crea una instancia del objeto.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 no puede encontrar el tiempo de ejecución typeName en el Assembly de instancia, 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 podría deberse a que: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 clase Assembly instancia.The type doesn't exist in the current Assembly instance.

Seguridad

ReflectionPermission
Cuando se invoca en tiempo de ejecución a través de 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[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 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 virtual 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 String String String

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

ignoreCase
Boolean Boolean Boolean 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 BindingFlags BindingFlags 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. Este valor es una combinación de marcadores de bits de BindingFlags.The value is a combination of bit flags from BindingFlags.

binder
Binder Binder 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 el constructor predeterminado, args debe ser una matriz vacía o null.If the default constructor is desired, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo 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.

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 en tiempo de ejecución a través de 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