Compartilhar via


Assembly.CreateInstance Método

Definição

Localiza um tipo desse assembly e cria uma instância dele usando o ativador do sistema.

Sobrecargas

Nome Description
CreateInstance(String)

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador do sistema, usando a pesquisa que diferencia maiúsculas de minúsculas.

CreateInstance(String, Boolean)

Localiza o tipo especificado desse assembly e cria uma instância dele usando o ativador do sistema, com pesquisa opcional que diferencia maiúsculas de minúsculas.

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 pesquisa opcional que diferencia maiúsculas de minúsculas e ter a cultura, os argumentos e os atributos de associação e ativação especificados.

CreateInstance(String)

Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs

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

typeName
String

O FullName tipo a ser localizado.

Retornos

Uma instância do tipo especificado criado com o construtor sem parâmetros; ou null se typeName não for encontrado. O tipo é resolvido usando o associador padrão, sem especificar a cultura ou os atributos de ativação e com BindingFlags definido como Public ou Instance.

Implementações

Atributos

Exceções

typeName é uma cadeia de caracteres vazia ("") ou uma cadeia de caracteres começando com um caractere nulo.

- ou -

O assembly atual foi carregado no contexto somente reflexão.

typeName é null.

Nenhum construtor correspondente foi encontrado.

typeName requer um assembly dependente que não pôde ser encontrado.

typeName requer um assembly dependente que foi encontrado, mas não pôde ser carregado.

- ou -

O assembly atual foi carregado no contexto somente reflexão e typeName requer um assembly dependente que não foi pré-carregado.

typeName requer um assembly dependente, mas o arquivo não é um assembly válido para o runtime carregado no momento.

Exemplos

O exemplo a seguir define uma Person classe e chama o CreateInstance(String) método para instanciá-la.

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 runtime não puder ser localizado typeName na Assembly instância, ele retornará null em vez de gerar uma exceção. Isso pode acontecer porque:

  • Você não especificou o nome totalmente qualificado do tipo.

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

  • O tipo não existe na instância atual Assembly .

Aplica-se a

CreateInstance(String, Boolean)

Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs

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

typeName
String

O FullName tipo a ser localizado.

ignoreCase
Boolean

true para ignorar o caso do nome do tipo; caso contrário, false.

Retornos

Uma instância do tipo especificado criado com o construtor sem parâmetros; ou null se typeName não for encontrado. O tipo é resolvido usando o associador padrão, sem especificar a cultura ou os atributos de ativação e com BindingFlags definido como Public ou Instance.

Implementações

Atributos

Exceções

typeName é uma cadeia de caracteres vazia ("") ou uma cadeia de caracteres começando com um caractere nulo.

- ou -

O assembly atual foi carregado no contexto somente reflexão.

Nenhum construtor correspondente foi encontrado.

typeName é null.

typeName requer um assembly dependente que não pôde ser encontrado.

typeName requer um assembly dependente que foi encontrado, mas não pôde ser carregado.

- ou -

O assembly atual foi carregado no contexto somente reflexão e typeName requer um assembly dependente que não foi pré-carregado.

typeName requer um assembly dependente, mas o arquivo não é um assembly válido para o runtime carregado no momento.

Exemplos

O exemplo a seguir define uma Person classe. Em seguida, ele chama o CreateInstance(String) método para instanciá-lo, mas como o casing do typeName argumento não corresponde ao da propriedade do FullName tipo, o método retorna null. Quando o exemplo passa a mesma cadeia de caracteres para a CreateInstance(String, Boolean) sobrecarga e especifica que a comparação deve não diferenciar maiúsculas de minúsculas, a Person classe é encontrada e um Person objeto é instanciado com êxito.

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 runtime não puder ser localizado typeName na Assembly instância, ele retornará null em vez de gerar uma exceção. Isso pode acontecer porque:

  • Você não especificou o nome totalmente qualificado do tipo.

  • O tipo não existe na instância atual Assembly .

Aplica-se a

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs
Origem:
Assembly.cs

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

typeName
String

O FullName tipo a ser localizado.

ignoreCase
Boolean

true para ignorar o caso do nome do tipo; caso contrário, false.

bindingAttr
BindingFlags

Uma máscara de bits que afeta a maneira como a pesquisa é realizada. O valor é uma combinação de sinalizadores de bits de BindingFlags.

binder
Binder

Um objeto que permite a associação, a coerção de tipos de argumento, a invocação de membros e a recuperação de objetos por meio da MemberInfo reflexão. Se binder for null, o associador padrão será usado.

args
Object[]

Uma matriz que contém os argumentos a serem passados para o construtor. Essa matriz de argumentos deve corresponder em número, ordem e digitar os parâmetros do construtor a ser invocado. Se o construtor sem parâmetros for desejado, args deverá ser uma matriz vazia ou null.

culture
CultureInfo

Uma instância usada CultureInfo para controlar a coerção de tipos. Se isso for null, o CultureInfo thread atual será usado. (Isso é necessário para converter uma cadeia de caracteres que representa 1000 em um Double valor, por exemplo, uma vez que 1000 é representado de forma diferente por culturas diferentes.)

activationAttributes
Object[]

Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, uma matriz que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto. Esse parâmetro está relacionado a objetos ativados pelo cliente. A ativação do cliente é uma tecnologia herdada que é retida para compatibilidade com versões anteriores, mas não é recomendada para o novo desenvolvimento. Em vez disso, os aplicativos distribuídos devem usar o Windows Communication Foundation.

Retornos

Uma instância do tipo especificado ou null se typeName não for encontrada. Os argumentos fornecidos são usados para resolver o tipo e para associar o construtor usado para criar a instância.

Implementações

Atributos

Exceções

typeName é uma cadeia de caracteres vazia ("") ou uma cadeia de caracteres começando com um caractere nulo.

- ou -

O assembly atual foi carregado no contexto somente reflexão.

typeName é null.

Nenhum construtor correspondente foi encontrado.

Uma matriz de atributos de ativação não vazia é passada para um tipo que não herda.MarshalByRefObject

typeName requer um assembly dependente que não pôde ser encontrado.

typeName requer um assembly dependente que foi encontrado, mas não pôde ser carregado.

- ou -

O assembly atual foi carregado no contexto somente reflexão e typeName requer um assembly dependente que não foi pré-carregado.

typeName requer um assembly dependente, mas o arquivo não é um assembly válido para o runtime carregado no momento.

Aplica-se a