Assembly.CreateInstance Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Individua un tipo in questo assembly e ne crea un'istanza usando l'attivatore di sistema.
Overload
CreateInstance(String) |
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione tra maiuscole e minuscole. |
CreateInstance(String, Boolean) |
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole. |
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema, consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole e usando le impostazioni cultura, gli argomenti e gli attributi di attivazione e di binding specificati. |
CreateInstance(String)
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione tra maiuscole e minuscole.
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
Parametri
Restituisce
Istanza del tipo specificato creata con il costruttore senza parametri oppure null
se typeName
non viene trovato. Il tipo viene risolto usando il binder predefinito, senza specificare attributi delle impostazioni cultura o dell'attivazione e con BindingFlags impostato su Public
o Instance
.
Implementazioni
Eccezioni
typeName
è una stringa vuota ("") o una stringa che inizia con un carattere Null.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection.
typeName
è null
.
Non è stato trovato alcun costruttore corrispondente.
typeName
richiede un assembly dipendente che non è stato trovato.
typeName
richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection e typeName
richiede un assembly dipendente che non è stato precaricato.
typeName
richiede un assembly dipendente, ma il file non è un assembly valido per il runtime attualmente caricato.
Esempio
Nell'esempio seguente viene definita una Person
classe e viene chiamato il metodo per crearne un'istanza CreateInstance(String) .
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'
Commenti
Se il runtime non riesce a trovare typeName
nell'istanza Assembly , restituisce null
anziché generare un'eccezione. Ciò può verificarsi perché:
Non è stato specificato il nome completo del tipo.
È stato specificato il nome completo del tipo, ma il case non corrisponde alla distinzione tra maiuscole e minuscole della proprietà del Type.FullName tipo. Per un confronto senza distinzione tra maiuscole e minuscole con
typeName
il nome completo del tipo, chiamare l'overload CreateInstance(String, Boolean) e specificaretrue
per l'argomentoignoreCase
.Il tipo non esiste nell'istanza corrente Assembly .
Si applica a
CreateInstance(String, Boolean)
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema e consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole.
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
Parametri
- ignoreCase
- Boolean
true
per ignorare la distinzione tra maiuscole e minuscole nel nome del tipo; in caso contrario, false
.
Restituisce
Istanza del tipo specificato creata con il costruttore senza parametri oppure null
se typeName
non viene trovato. Il tipo viene risolto usando il binder predefinito, senza specificare attributi delle impostazioni cultura o dell'attivazione e con BindingFlags impostato su Public
o Instance
.
Implementazioni
Eccezioni
typeName
è una stringa vuota ("") o una stringa che inizia con un carattere Null.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection.
Non è stato trovato alcun costruttore corrispondente.
typeName
è null
.
typeName
richiede un assembly dipendente che non è stato trovato.
typeName
richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection e typeName
richiede un assembly dipendente che non è stato precaricato.
typeName
richiede un assembly dipendente, ma il file non è un assembly valido per il runtime attualmente caricato.
Esempio
Nell'esempio seguente viene definita una Person
classe . Chiama quindi il CreateInstance(String) metodo per crearne un'istanza, ma poiché la combinazione di maiuscole e minuscole dell'argomento typeName
non corrisponde a quella della proprietà del FullName tipo, il metodo restituisce null
. Quando l'esempio passa la stessa stringa all'overload CreateInstance(String, Boolean) e specifica che il confronto deve essere senza distinzione tra maiuscole e minuscole, viene trovata la Person
classe e viene creata un'istanza di un Person
oggetto.
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'
Commenti
Se il runtime non riesce a trovare typeName
nell'istanza Assembly , restituisce null
anziché generare un'eccezione. Ciò può verificarsi perché:
Non è stato specificato il nome completo del tipo.
Il tipo non esiste nell'istanza corrente Assembly .
Si applica a
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato in questo assembly e ne crea un'istanza usando l'attivatore di sistema, consentendo la ricerca con distinzione facoltativa tra maiuscole e minuscole e usando le impostazioni cultura, gli argomenti e gli attributi di attivazione e di binding specificati.
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
Parametri
- ignoreCase
- Boolean
true
per ignorare la distinzione tra maiuscole e minuscole nel nome del tipo; in caso contrario, false
.
- bindingAttr
- BindingFlags
Maschera di bit che influenza le modalità di esecuzione della ricerca. Il valore è una combinazione di flag di bit dell'oggetto BindingFlags.
- binder
- Binder
Oggetto che consente il binding, la coercizione dei tipi di argomento, la chiamata dei membri e il recupero di oggetti MemberInfo
tramite reflection. Se binder
è null
, verrà usato il binder predefinito.
- args
- Object[]
Matrice contenente gli argomenti da passare al costruttore. La matrice di argomenti deve corrispondere ai parametri del costruttore da richiamare in quanto a numero, ordine e tipo. Per usare il costruttore senza parametri, args
deve essere una matrice vuota o null
.
- culture
- CultureInfo
Istanza di CultureInfo
usata per regolare la coercizione dei tipi. Se è null
, per il thread corrente verrà usato l'oggetto CultureInfo. Si tratta di un parametro necessario per convertire una stringa che rappresenta, ad esempio, il numero 1000 in un valore Double, dal momento che questo numero è rappresentato in modo diverso nelle varie impostazioni cultura.
- activationAttributes
- Object[]
Matrice di uno o più attributi che possono prendere parte all'attivazione. In genere, matrice che contiene un singolo oggetto UrlAttribute che specifica l'URL necessario per attivare un oggetto remoto. Il parametro è correlato agli oggetti attivati dal client. L'attivazione del client è una tecnologia legacy mantenuta per garantire la compatibilità con le versioni precedenti, ma non è consigliata per nuove attività di sviluppo. Per le applicazioni distribuite si dovrebbe usare invece Windows Communication Foundation.
Restituisce
Istanza del tipo specificato o null
se typeName
non viene trovato. Gli argomenti forniti vengono usati per risolvere il tipo e per associare il costruttore usato per creare l'istanza.
Implementazioni
Eccezioni
typeName
è una stringa vuota ("") o una stringa che inizia con un carattere Null.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection.
typeName
è null
.
Non è stato trovato alcun costruttore corrispondente.
Una matrice di attributi di attivazione non vuota viene passata a un tipo che non eredita da MarshalByRefObject.
typeName
richiede un assembly dipendente che non è stato trovato.
typeName
richiede un assembly dipendente che è stato trovato ma che non è stato possibile caricare.
-oppure-
L'assembly corrente è stato caricato nel contesto di sola reflection e typeName
richiede un assembly dipendente che non è stato precaricato.
typeName
richiede un assembly dipendente, ma il file non è un assembly valido per il runtime attualmente caricato.