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 da questo assembly e ne crea un'istanza usando l'attivatore di sistema.
Overload
| Nome | Descrizione |
|---|---|
| CreateInstance(String) |
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, usando la ricerca con distinzione tra maiuscole e minuscole. |
| CreateInstance(String, Boolean) |
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, con la ricerca facoltativa con distinzione tra maiuscole e minuscole. |
| CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, con la ricerca facoltativa con distinzione tra maiuscole e minuscole e con le impostazioni cultura, gli argomenti e gli attributi di associazione e attivazione specificati. |
CreateInstance(String)
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, usando la ricerca con distinzione tra maiuscole e minuscole.
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
Parametri
Restituisce
Istanza del tipo specificato creato con il costruttore senza parametri; o null se typeName non viene trovato. Il tipo viene risolto usando il gestore di associazione predefinito, senza specificare le impostazioni cultura o gli attributi di attivazione e con BindingFlags impostato su Public o Instance.
Implementazioni
- Attributi
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 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 di , restituisce null anziché generare un'eccezione. Questo problema può verificarsi perché:
Non è stato specificato il nome completo del tipo.
È stato specificato il nome completo del tipo, ma il relativo caso non corrisponde al caso della proprietà del Type.FullName tipo. Per un confronto senza distinzione tra maiuscole e minuscole con
typeNameil nome completo del tipo, chiamare l'overload CreateInstance(String, Boolean) e specificaretrueper 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
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, con la ricerca facoltativa con distinzione tra maiuscole e minuscole.
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
Parametri
- ignoreCase
- Boolean
true per ignorare la distinzione tra maiuscole e minuscole del nome del tipo; in caso contrario, false.
Restituisce
Istanza del tipo specificato creato con il costruttore senza parametri; o null se typeName non viene trovato. Il tipo viene risolto usando il gestore di associazione predefinito, senza specificare le impostazioni cultura o gli attributi di attivazione e con BindingFlags impostato su Public o Instance.
Implementazioni
- Attributi
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 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 di , restituisce null anziché generare un'eccezione. Questo problema 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
- Origine:
- Assembly.cs
- Origine:
- Assembly.cs
Individua il tipo specificato da questo assembly e ne crea un'istanza usando l'attivatore di sistema, con la ricerca facoltativa con distinzione tra maiuscole e minuscole e con le impostazioni cultura, gli argomenti e gli attributi di associazione e attivazione 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);
[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
Parametri
- ignoreCase
- Boolean
true per ignorare la distinzione tra maiuscole e minuscole del nome del tipo; in caso contrario, false.
- bindingAttr
- BindingFlags
Maschera di bit che influisce sul modo in cui viene eseguita la ricerca. Il valore è una combinazione di flag di bit da BindingFlags.
- binder
- Binder
Oggetto che consente l'associazione, la coercizione dei tipi di argomento, la chiamata di membri e il recupero di MemberInfo oggetti tramite reflection. Se binder è null, viene usato il gestore di associazione predefinito.
- args
- Object[]
Matrice che contiene gli argomenti da passare al costruttore. Questa matrice di argomenti deve corrispondere in numero, ordine e digitare i parametri del costruttore da richiamare. Se il costruttore senza parametri è desiderato, args deve essere una matrice vuota o null.
- culture
- CultureInfo
Istanza di CultureInfo utilizzata per gestire la coercizione dei tipi. Se è null, viene usato per CultureInfo il thread corrente. È necessario convertire una stringa che rappresenta 1000 in un Double valore, ad esempio perché 1000 è rappresentato in modo diverso da impostazioni cultura diverse.
- activationAttributes
- Object[]
Matrice di uno o più attributi che possono partecipare all'attivazione. In genere, una matrice che contiene un singolo UrlAttribute oggetto che specifica l'URL necessario per attivare un oggetto remoto. Questo parametro è correlato agli oggetti attivati dal client. L'attivazione client è una tecnologia legacy che viene mantenuta per la compatibilità con le versioni precedenti, ma non è consigliata per il nuovo sviluppo. Le applicazioni distribuite devono invece usare Windows Communication Foundation.
Restituisce
Istanza del tipo specificato o null se typeName non viene trovata. Gli argomenti forniti vengono usati per risolvere il tipo e per associare il costruttore utilizzato per creare l'istanza.
Implementazioni
- Attributi
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 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.