Assembly.CreateInstance Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sucht einen Typ aus dieser Assembly und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs.
Überlädt
CreateInstance(String) |
Sucht den angegebenen Typ aus dieser Assembly unter Berücksichtigung der Groß- und Kleinschreibung und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs. |
CreateInstance(String, Boolean) |
Sucht den angegebenen Typ aus dieser Assembly, unter wahlweiser Berücksichtigung der Groß- und Kleinschreibung, und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs. |
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Sucht den angegebenen Typ aus dieser Assembly und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs. Hierbei ist die Berücksichtigung der Groß- und Kleinschreibung optional und Kultur, Argumente, Bindungs- und Aktivierungsattribute sind angegeben. |
CreateInstance(String)
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
Sucht den angegebenen Typ aus dieser Assembly unter Berücksichtigung der Groß- und Kleinschreibung und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs.
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
Parameter
Gibt zurück
Eine Instanz des angegebenen Typs, der mit dem parameterlosen Konstruktor erstellt wurde; oder null
, wenn typeName
nicht gefunden wird. Der Typ wird mit dem Standardbinder aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben, und mit BindingFlags auf Public
oder Instance
festgelegt.
Implementiert
Ausnahmen
typeName
ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem NULL-Zeichen anfängt.
- oder -
Die aktuelle Assembly wurde in den ReflectionOnly-Kontext geladen.
typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
typeName
erfordert eine abhängige Assembly, die nicht gefunden werden konnte.
typeName
erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.
- oder -
Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName
erfordert eine abhängige Assembly, die nicht vorab geladen wurde.
typeName
erfordert eine abhängige Assembly, aber die Datei ist keine gültige Assembly für die aktuell geladene Runtime.
Beispiele
Im folgenden Beispiel wird eine Person
Klasse definiert und die CreateInstance(String) -Methode aufgerufen, um sie zu instanziieren.
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'
Hinweise
Wenn die Runtime im Assembly instance nicht gefunden typeName
werden kann, wird sie zurückgegebennull
, anstatt eine Ausnahme auszulösen. Dies kann folgende Ursache haben:
Sie haben den vollqualifizierten Namen des Typs nicht angegeben.
Sie haben den vollqualifizierten Typnamen angegeben, aber die Groß- und Kleinschreibung stimmt nicht mit der Groß-/Kleinschreibung der Eigenschaft des Typs Type.FullName überein. Um die Groß-/Kleinschreibung mit dem vollständigen Namen des
typeName
Typs zu vergleichen, rufen Sie die CreateInstance(String, Boolean) Überladung auf, und geben Sie für das Argument antrue
ignoreCase
.Der Typ ist im aktuellen Assembly instance nicht vorhanden.
Gilt für:
CreateInstance(String, Boolean)
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
Sucht den angegebenen Typ aus dieser Assembly, unter wahlweiser Berücksichtigung der Groß- und Kleinschreibung, und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs.
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
Parameter
- ignoreCase
- Boolean
true
, um die Groß- und Kleinschreibung des Typnamens zu ignorieren, andernfalls false
.
Gibt zurück
Eine Instanz des angegebenen Typs, der mit dem parameterlosen Konstruktor erstellt wurde; oder null
, wenn typeName
nicht gefunden wird. Der Typ wird mit dem Standardbinder aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben, und mit BindingFlags auf Public
oder Instance
festgelegt.
Implementiert
Ausnahmen
typeName
ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem NULL-Zeichen anfängt.
- oder -
Die aktuelle Assembly wurde in den ReflectionOnly-Kontext geladen.
Es wurde kein übereinstimmender Konstruktor gefunden.
typeName
ist null
.
typeName
erfordert eine abhängige Assembly, die nicht gefunden werden konnte.
typeName
erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.
- oder -
Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName
erfordert eine abhängige Assembly, die nicht vorab geladen wurde.
typeName
erfordert eine abhängige Assembly, aber die Datei ist keine gültige Assembly für die aktuell geladene Runtime.
Beispiele
Im folgenden Beispiel wird eine Klasse vom Typ Person
definiert: Anschließend wird die CreateInstance(String) -Methode aufgerufen, um sie zu instanziieren. Da die Groß- und Kleinschreibung des typeName
Arguments jedoch nicht mit der -Eigenschaft des Typs FullName übereinstimmt, gibt die -Methode zurück null
. Wenn das Beispiel dieselbe Zeichenfolge an die CreateInstance(String, Boolean) Überladung übergibt und angibt, dass beim Vergleich die Groß-/Kleinschreibung nicht beachtet werden soll, wird die Person
-Klasse gefunden und ein Person
Objekt erfolgreich instanziiert.
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'
Hinweise
Wenn die Runtime im Assembly instance nicht gefunden typeName
werden kann, wird sie zurückgegebennull
, anstatt eine Ausnahme auszulösen. Dies kann folgende Ursache haben:
Sie haben den vollqualifizierten Namen des Typs nicht angegeben.
Der Typ ist im aktuellen Assembly instance nicht vorhanden.
Gilt für:
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
- Quelle:
- Assembly.cs
Sucht den angegebenen Typ aus dieser Assembly und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs. Hierbei ist die Berücksichtigung der Groß- und Kleinschreibung optional und Kultur, Argumente, Bindungs- und Aktivierungsattribute sind angegeben.
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
Parameter
- ignoreCase
- Boolean
true
, um die Groß- und Kleinschreibung des Typnamens zu ignorieren, andernfalls false
.
- bindingAttr
- BindingFlags
Eine Bitmaske, die sich auf die Ausführung der Suche auswirkt. Der Wert ist eine Kombination von Bitflags aus BindingFlags.
- binder
- Binder
Ein Objekt, das die Bindung, die Umwandlung von Argumenttypen, das Aufrufen von Membern und das Abrufen von MemberInfo
-Objekten über Reflektion ermöglicht. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- args
- Object[]
Ein Array, das die an den Konstruktor zu übergebenden Argumente enthält. Dieses Array von Argumenten muss bezüglich Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmen. Wenn der parameterlose Konstruktor gewünscht ist, muss args
ein leeres Array oder null
sein.
- culture
- CultureInfo
Eine Instanz von CultureInfo
für die Steuerung der Umwandlung von Typen. Wenn dies null
ist, wird die CultureInfo des aktuellen Threads verwendet. (Dies ist z. B. erforderlich, um eine Zeichenfolge, die 1000 darstellt, in einen Double-Wert zu konvertieren, da 1000 in verschiedenen Kulturen unterschiedlich dargestellt wird.)
- activationAttributes
- Object[]
Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können. Üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt. Der Parameter ist vom Client aktivierten Objekten zugeordnet. Die Clientaktivierung ist eine veraltete Technologie, die zum Zweck der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten, jedoch nicht für die Neuentwicklung empfohlen wird. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.
Gibt zurück
Eine Instanz des angegebenen Typs oder null
, wenn typeName
nicht gefunden wird. Die angegebenen Argumente werden verwendet, um den Typ aufzulösen und den Konstruktor zu binden, der verwendet wird, um die Instanz zu erstellen.
Implementiert
Ausnahmen
typeName
ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem NULL-Zeichen anfängt.
- oder -
Die aktuelle Assembly wurde in den ReflectionOnly-Kontext geladen.
typeName
ist null
.
Es wurde kein übereinstimmender Konstruktor gefunden.
Ein nicht leeres Array von Aktivierungsattributen wird an einen Typ übergeben, der nicht von MarshalByRefObject erbt.
typeName
erfordert eine abhängige Assembly, die nicht gefunden werden konnte.
typeName
erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.
- oder -
Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName
erfordert eine abhängige Assembly, die nicht vorab geladen wurde.
typeName
erfordert eine abhängige Assembly, aber die Datei ist keine gültige Assembly für die aktuell geladene Runtime.