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

Definição

Localiza um tipo nesse assembly e cria uma instância dele, usando o ativador do 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 o tipo especificado desse assembly e cria uma instância dele usando o ativador de sistema, usando a pesquisa que diferencia maiúsculas de 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)

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador de sistema, com pesquisa que diferencia maiúsculas de 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[])

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador do sistema, com a pesquisa opcional que diferencia maiúsculas de minúsculas e com a cultura especificada, os argumentos e os atributos de associação e ativação.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 o tipo especificado desse assembly e cria uma instância dele usando o ativador de sistema, usando a pesquisa que diferencia maiúsculas de 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

O FullName do tipo a se localizar.The FullName of the type to locate.

Retornos

Uma instância do tipo especificado criada com o construtor sem parâmetro ou, se typeName não foi encontrado, null.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. O tipo é resolvido usando o associador padrão, sem especificar atributos de cultura ou de ativação, e com BindingFlags definido como Public ou Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementações

Exceções

typeName é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.typeName is an empty string ("") or a string beginning with a null character.

- ou --or- O assembly atual foi carregado no contexto de somente reflexão.The current assembly was loaded into the reflection-only context.

Nenhum construtor correspondente foi encontrado.No matching constructor was found.

typeName exige um assembly dependente que não pôde ser encontrado.typeName requires a dependent assembly that could not be found.

typeName exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.typeName requires a dependent assembly that was found but could not be loaded.

- ou --or- O assembly atual foi carregado no contexto somente reflexão e o typeName exige um assembly dependente que não foi pré-carregado.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName exige um assembly dependente, mas o arquivo não é um assembly válido.typeName requires a dependent assembly, but the file is not a valid assembly.

- ou --or- typeName requer um assembly dependente compilado para uma versão do tempo de execução que é posterior à versão atualmente carregada.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Exemplos

O exemplo a seguir define Person uma classe e chama CreateInstance(String) o método para instanciá-la.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'

Comentários

Se o tempo de execução não puder typeName localizar Assembly na instância, ele retornará null em vez de lançar uma exceção.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Isso pode acontecer porque:This might happen because:

  • Você não especificou o nome totalmente qualificado do tipo.You haven't specified the fully qualified name of the type.

  • Você especificou o nome do tipo totalmente qualificado, mas seu caso não corresponde ao caso da Propriedade do Type.FullName 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 uma comparação que não diferencia maiúsculas typeName de minúsculas de com o nome completo do CreateInstance(String, Boolean) tipo, chame true a sobrecarga ignoreCase e especifique para o 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.

  • O tipo não existe na instância atual Assembly .The type doesn't exist in the current Assembly instance.

Segurança

ReflectionPermission
quando invocado com associação tardia por meio 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[]). Enumeração associada: MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean)

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador de sistema, com pesquisa que diferencia maiúsculas de 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

O FullName do tipo a se localizar.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

true para ignorar maiúsculas e minúsculas do nome do tipo; caso contrário, false.true to ignore the case of the type name; otherwise, false.

Retornos

Uma instância do tipo especificado criada com o construtor sem parâmetro ou, se typeName não foi encontrado, null.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. O tipo é resolvido usando o associador padrão, sem especificar atributos de cultura ou de ativação, e com BindingFlags definido como Public ou Instance.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementações

Exceções

typeName é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.typeName is an empty string ("") or a string beginning with a null character.

- ou --or- O assembly atual foi carregado no contexto de somente reflexão.The current assembly was loaded into the reflection-only context.

Nenhum construtor correspondente foi encontrado.No matching constructor was found.

typeName exige um assembly dependente que não pôde ser encontrado.typeName requires a dependent assembly that could not be found.

typeName exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.typeName requires a dependent assembly that was found but could not be loaded.

- ou --or- O assembly atual foi carregado no contexto somente reflexão e o typeName exige um assembly dependente que não foi pré-carregado.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName exige um assembly dependente, mas o arquivo não é um assembly válido.typeName requires a dependent assembly, but the file is not a valid assembly.

- ou --or- typeName requer um assembly dependente compilado para uma versão do tempo de execução que é posterior à versão atualmente carregada.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Exemplos

O exemplo a seguir define Person uma classe.The following example defines a Person class. Em seguida, ele CreateInstance(String) chama o método para instanciá-lo, mas como typeName a capitalização do argumento não corresponde ao FullName da Propriedade do tipo, nullo método retorna.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. Quando o exemplo passa a mesma cadeia de caracteres CreateInstance(String, Boolean) para a sobrecarga e especifica que a comparação deve diferenciar maiúsculas de Person minúsculas, a classe é Person encontrada e um objeto é instanciado com êxito.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'

Comentários

Se o tempo de execução não puder typeName localizar Assembly na instância, ele retornará null em vez de lançar uma exceção.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Isso pode acontecer porque:This might happen because:

  • Você não especificou o nome totalmente qualificado do tipo.You haven't specified the fully qualified name of the type.

  • O tipo não existe na instância atual Assembly .The type doesn't exist in the current Assembly instance.

Segurança

ReflectionPermission
quando invocado com associação tardia por meio 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[]). Enumeração associada: 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[])

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador do sistema, com a pesquisa opcional que diferencia maiúsculas de minúsculas e com a cultura especificada, os argumentos e os atributos de associação e ativação.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

O FullName do tipo a se localizar.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

true para ignorar maiúsculas e minúsculas do nome do tipo; caso contrário, false.true to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Um bitmask que afeta a maneira pela qual a pesquisa é realizada.A bitmask that affects the way in which the search is conducted. O valor é uma combinação dos sinalizadores de bit de BindingFlags.The value is a combination of bit flags from BindingFlags.

binder
Binder Binder Binder Binder

Um objeto que permite a associação, a coerção de tipos de argumentos, invocação de membros e a recuperação de objetos MemberInfo por meio de reflexão.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Caso binder seja null, o associador padrão é usado.If binder is null, the default binder is used.

args
Object[]

Uma matriz que contém os argumentos a serem passados ao construtor.An array that contains the arguments to be passed to the constructor. Essa matriz de argumentos deve corresponder em número, ordem e tipo aos parâmetros do construtor a ser invocado.This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. Caso haja preferência pelo construtor sem parâmetros, args precisará ser uma matriz vazia ou null.If the parameterless constructor is desired, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Uma instância de CultureInfo usada para determinar a coerção de tipos.An instance of CultureInfo used to govern the coercion of types. Se isso for null, será usado o CultureInfo para o thread atual.If this is null, the CultureInfo for the current thread is used. (Isso é necessário para converter um String que representa 1000 para um valor Double, por exemplo, uma vez que 1000 é representado de forma diferente por diferentes culturas.)(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[]

Uma matriz de um ou mais atributos que podem participar da ativação.An array of one or more attributes that can participate in activation. Normalmente, uma matriz que contém um único objeto UrlAttribute que especifica a URL necessária para ativar um objeto remoto.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. Esse parâmetro está relacionado a objetos ativados pelo cliente.This parameter is related to client-activated objects. A ativação do cliente é uma tecnologia herdada, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.Distributed applications should instead use Windows Communication Foundation.

Retornos

Uma instância do tipo especificado ou null, se typeName não for encontrado.An instance of the specified type, or null if typeName is not found. Os argumentos fornecidos são usados para resolver o tipo e associar o construtor utilizado para criar a instância.The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

Implementações

Exceções

typeName é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.typeName is an empty string ("") or a string beginning with a null character.

- ou --or- O assembly atual foi carregado no contexto de somente reflexão.The current assembly was loaded into the reflection-only context.

Nenhum construtor correspondente foi encontrado.No matching constructor was found.

Uma matriz de atributos de ativação não vazia é passada a um tipo que não herda de MarshalByRefObject.A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

typeName requer um assembly dependente que não pôde ser encontrado.typeName requires a dependent assembly that could not be found.

typeName exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.typeName requires a dependent assembly that was found but could not be loaded.

- ou --or- O assembly atual foi carregado no contexto somente reflexão e o typeName exige um assembly dependente que não foi pré-carregado.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName exige um assembly dependente, mas o arquivo não é um assembly válido.typeName requires a dependent assembly, but the file is not a valid assembly.

- ou --or- typeName requer um assembly dependente compilado para uma versão do tempo de execução posterior à versão carregada.typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

Segurança

ReflectionPermission
quando invocado com associação tardia por meio 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[]). Enumeração associada: MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
para criar uma instância de um delegado.to create an instance of a delegate. Enumeração associada: UnmanagedCodeAssociated enumeration: UnmanagedCode

Aplica-se a