Assembly.CreateInstance Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Localiza um tipo nesse assembly e cria uma instância dele, usando o ativador do sistema.
Sobrecargas
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. |
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. |
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. |
CreateInstance(String)
- Origem:
- Assembly.cs
- Origem:
- Assembly.cs
- Origem:
- Assembly.cs
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.
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object? CreateInstance (string typeName);
public object CreateInstance (string typeName);
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
Retornos
Uma instância do tipo especificado criada com o construtor sem parâmetro ou, se typeName
não foi encontrado, null
. 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
.
Implementações
Exceções
typeName
é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.
- ou -
O assembly atual foi carregado no contexto de somente reflexão.
typeName
é null
.
Nenhum construtor correspondente foi encontrado.
typeName
requer um assembly dependente que não pôde ser encontrado.
typeName
exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.
- ou -
O assembly atual foi carregado no contexto somente reflexão e o typeName
exige 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 conseguir localizar 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 minúsculas de
typeName
com o nome completo do tipo, chame a CreateInstance(String, Boolean) sobrecarga e especifiquetrue
para oignoreCase
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
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.
public:
System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object? CreateInstance (string typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
member this.CreateInstance : string * bool -> obj
abstract member CreateInstance : string * bool -> obj
override this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object
Parâmetros
- ignoreCase
- Boolean
true
para ignorar maiúsculas e minúsculas do nome do tipo; caso contrário, false
.
Retornos
Uma instância do tipo especificado criada com o construtor sem parâmetro ou, se typeName
não foi encontrado, null
. 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
.
Implementações
Exceções
typeName
é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.
- ou -
O assembly atual foi carregado no contexto de somente reflexão.
Nenhum construtor correspondente foi encontrado.
typeName
é null
.
typeName
requer um assembly dependente que não pôde ser encontrado.
typeName
exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.
- ou -
O assembly atual foi carregado no contexto somente reflexão e o typeName
exige 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 classe Person
. Em seguida, ele chama o CreateInstance(String) método para instanciá-lo, mas como o uso de maiúsculas e minúsculas 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 conseguir localizar 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
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.
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);
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);
abstract member CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
override this.CreateInstance : string * bool * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo * obj[] -> obj
Public Overridable Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Public Function CreateInstance (typeName As String, ignoreCase As Boolean, bindingAttr As BindingFlags, binder As Binder, args As Object(), culture As CultureInfo, activationAttributes As Object()) As Object
Parâmetros
- ignoreCase
- Boolean
true
para ignorar maiúsculas e minúsculas do nome do tipo; caso contrário, false
.
- bindingAttr
- BindingFlags
Um bitmask que afeta a maneira pela qual a pesquisa é realizada. O valor é uma combinação dos sinalizadores de bit de BindingFlags.
- 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. Caso binder
seja null
, o associador padrão é usado.
- args
- Object[]
Uma matriz que contém os argumentos a serem passados ao construtor. Essa matriz de argumentos deve corresponder em número, ordem e tipo aos parâmetros do construtor a ser invocado. Caso haja preferência pelo construtor sem parâmetros, args
precisará ser uma matriz vazia ou null
.
- culture
- CultureInfo
Uma instância de CultureInfo
usada para determinar a coerção de tipos. Se isso for null
, será usado o CultureInfo para o thread atual. (Isso é necessário para converter uma cadeia de caracteres que representa 1000 para um valor Double, por exemplo, uma vez que 1000 é representado de maneira diferente por diferentes culturas.)
- activationAttributes
- Object[]
Uma matriz de um ou mais atributos que podem participar da ativação. Normalmente, uma matriz que contém um único objeto UrlAttribute 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, mantida para compatibilidade com versões anteriores, mas não é recomendada para novos desenvolvimentos. 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 encontrado. Os argumentos fornecidos são usados para resolver o tipo e associar o construtor utilizado para criar a instância.
Implementações
Exceções
typeName
é uma cadeia de caracteres vazia ("") ou que começa com um caractere nulo.
- ou -
O assembly atual foi carregado no contexto de somente reflexão.
typeName
é null
.
Nenhum construtor correspondente foi encontrado.
Uma matriz de atributos de ativação não vazia é passada a um tipo que não herda de MarshalByRefObject.
typeName
requer um assembly dependente que não pôde ser encontrado.
typeName
exige um assembly dependente que foi encontrado, mas que não pôde ser carregado.
- ou -
O assembly atual foi carregado no contexto somente reflexão e o typeName
exige 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.