Assembly.CreateInstance Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Localiza um tipo a partir deste conjunto e cria uma instância dele usando o ativador do sistema.
Sobrecargas
| Name | Description |
|---|---|
| CreateInstance(String) |
Localiza o tipo especificado a partir deste conjunto e cria uma instância dele usando o ativador do sistema, usando pesquisa sensível a maiúsculas minúsculas. |
| CreateInstance(String, Boolean) |
Localiza o tipo especificado a partir deste conjunto e cria uma instância dele usando o ativador do sistema, com pesquisa opcional a maiúsculas e minúsculas. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Localiza o tipo especificado a partir deste assembly e cria uma instância dele usando o ativador do sistema, com pesquisa opcional a maiúsculas e minúsculas e com os atributos de cultura, argumentos, ligação e ativação especificados. |
CreateInstance(String)
Localiza o tipo especificado a partir deste conjunto e cria uma instância dele usando o ativador do sistema, usando pesquisa sensível a maiúsculas minúsculas.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName);
public:
System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance(string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
member this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object
Parâmetros
Devoluções
Uma instância do tipo especificado criada com o construtor sem parâmetros; ou null se typeName não for encontrado. O tipo é resolvido usando o fichário padrão, sem especificar cultura ou atributos de ativação, e com BindingFlags definido como Public ou Instance.
Implementações
Exceções
typeName é uma cadeia vazia ("") ou uma cadeia que começa com um carácter nulo.
-ou-
O conjunto atual foi carregado no contexto apenas de reflexão.
typeName é null.
Não foi encontrado nenhum construtor correspondente.
typeName requer um assembly dependente que não foi encontrado.
typeName requer um conjunto dependente que foi encontrado mas não pôde ser carregado.
-ou-
O conjunto de corrente foi carregado no contexto apenas de reflexão e typeName requer um conjunto dependente que não foi pré-carregado.
typeName requer uma montagem dependente, mas o ficheiro não é uma assembly válida para o runtime atualmente carregado.
Exemplos
O exemplo seguinte define uma Person classe e chama o CreateInstance(String) método para a instanciar.
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'
Observações
Se o tempo de execução não conseguir encontrar typeName na Assembly instância, ele retorna null em vez de lançar uma exceção. Isto pode acontecer porque:
Não especificou o nome totalmente qualificado do tipo.
Especificou o nome do tipo totalmente qualificado, mas o seu caso não corresponde ao caso da propriedade do Type.FullName tipo. Para uma comparação insensível a maiúsculas e minúsculas com
typeNameo nome completo do tipo, chame a CreateInstance(String, Boolean) sobrecarga e especifiquetruepara oignoreCaseargumento.O tipo não existe na instância atual Assembly .
Aplica-se a
CreateInstance(String, Boolean)
Localiza o tipo especificado a partir deste conjunto e cria uma instância dele usando o ativador do sistema, com pesquisa opcional a maiúsculas e minúsculas.
public:
virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public:
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
member this.CreateInstance : string * bool -> obj
Public Function CreateInstance (typeName As String, ignoreCase As Boolean) As Object
Parâmetros
- ignoreCase
- Boolean
true ignorar o caso do nome do tipo; caso contrário, false.
Devoluções
Uma instância do tipo especificado criada com o construtor sem parâmetros; ou null se typeName não for encontrado. O tipo é resolvido usando o fichário padrão, sem especificar cultura ou atributos de ativação, e com BindingFlags definido como Public ou Instance.
Implementações
Exceções
typeName é uma cadeia vazia ("") ou uma cadeia que começa com um carácter nulo.
-ou-
O conjunto atual foi carregado no contexto apenas de reflexão.
Não foi encontrado nenhum construtor correspondente.
typeName é null.
typeName requer um assembly dependente que não foi encontrado.
typeName requer um conjunto dependente que foi encontrado mas não pôde ser carregado.
-ou-
O conjunto de corrente foi carregado no contexto apenas de reflexão e typeName requer um conjunto dependente que não foi pré-carregado.
typeName requer uma montagem dependente, mas o ficheiro não é uma assembly válida para o runtime atualmente carregado.
Exemplos
O exemplo seguinte define uma Person classe. Depois chama o CreateInstance(String) método para o instanciar, mas como o caso do typeName argumento não corresponde ao da propriedade do FullName tipo, o método devolve null. Quando o exemplo passa a mesma cadeia para a CreateInstance(String, Boolean) sobrecarga e especifica que a comparação deve ser indistinta a maiúsculas e minúsculas, a Person classe é encontrada e um Person objeto é instanciado com sucesso.
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'
Observações
Se o tempo de execução não conseguir encontrar typeName na Assembly instância, ele retorna null em vez de lançar uma exceção. Isto pode acontecer porque:
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[])
Localiza o tipo especificado a partir deste assembly e cria uma instância dele usando o ativador do sistema, com pesquisa opcional a maiúsculas e minúsculas e com os atributos de cultura, argumentos, ligaçã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);
public 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);
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 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 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
Parâmetros
- ignoreCase
- Boolean
true ignorar o caso do nome do tipo; caso contrário, false.
- bindingAttr
- BindingFlags
Uma máscara de bits que afeta a forma como a pesquisa é realizada. O valor é uma combinação de flags de bits de BindingFlags.
- binder
- Binder
Um objeto que permite a vinculação, coerção de tipos de argumentos, invocação de membros e recuperação de MemberInfo objetos através de reflexão. Se binder for null, utiliza-se o dossier padrão.
- args
- Object[]
Um array que contém os argumentos a serem passados ao construtor. Este array de argumentos deve corresponder em número, ordem e tipo aos parâmetros do construtor a ser invocado. Se o construtor sem parâmetros for desejado, args deve ser um array vazio ou null.
- culture
- CultureInfo
Um exemplo de CultureInfo usado para governar a coerção de tipos. Se for null, usa-se para CultureInfo a thread atual. (Isto é necessário para converter uma cadeia que representa 1000 num Double valor, por exemplo, uma vez que 1000 é representado de forma diferente por diferentes culturas.)
- activationAttributes
- Object[]
Um conjunto de um ou mais atributos que podem participar na ativação. Normalmente, um array que contém um único UrlAttribute objeto que especifica a URL necessária para ativar um objeto remoto. Este parâmetro está relacionado com objetos ativados pelo cliente. A ativação por clientes é uma tecnologia legada que é mantida para compatibilidade retroativa, mas não é recomendada para novos desenvolvimentos. As aplicações distribuídas deveriam antes usar o Windows Communication Foundation.
Devoluções
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 vincular o construtor que é usado para criar a instância.
Implementações
Exceções
typeName é uma cadeia vazia ("") ou uma cadeia que começa com um carácter nulo.
-ou-
O conjunto atual foi carregado no contexto apenas de reflexão.
typeName é null.
Não foi encontrado nenhum construtor correspondente.
Um array de atributos de ativação não vazio é passado para um tipo que não herda de MarshalByRefObject.
typeName requer um assembly dependente que não foi encontrado.
typeName requer um conjunto dependente que foi encontrado mas não pôde ser carregado.
-ou-
O conjunto de corrente foi carregado no contexto apenas de reflexão e typeName requer um conjunto dependente que não foi pré-carregado.
typeName requer uma montagem dependente, mas o ficheiro não é uma assembly válida para o runtime atualmente carregado.