Auf Englisch lesen

Teilen über


Assembly.CreateInstance Methode

Definition

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.

C#
public object? CreateInstance (string typeName);
C#
public object CreateInstance (string typeName);

Parameter

typeName
String

Der FullName des zu suchenden Typs.

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.

C#
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'

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 an trueignoreCase .

  • Der Typ ist im aktuellen Assembly instance nicht vorhanden.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.5, 1.6, 2.0, 2.1

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.

C#
public object? CreateInstance (string typeName, bool ignoreCase);
C#
public object CreateInstance (string typeName, bool ignoreCase);

Parameter

typeName
String

Der FullName des zu suchenden Typs.

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.

C#
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'

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:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.5, 1.6, 2.0, 2.1

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.

C#
public virtual object? CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder? binder, object[]? args, System.Globalization.CultureInfo? culture, object[]? activationAttributes);
C#
public virtual object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);
C#
public object CreateInstance (string typeName, bool ignoreCase, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes);

Parameter

typeName
String

Der FullName des zu suchenden Typs.

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.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1