Freigeben über


Assembly.CreateInstance Methode

Definition

Sucht einen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators.

Überlädt

Name Beschreibung
CreateInstance(String)

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz dieses Typs mithilfe des Systemaktivators unter Verwendung der Suche nach Groß-/Kleinschreibung.

CreateInstance(String, Boolean)

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung unterschieden wird.

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung die angegebene Kultur, Argumente und Bindungs- und Aktivierungsattribute vorhanden sind.

CreateInstance(String)

Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz dieses Typs mithilfe des Systemaktivators unter Verwendung der Suche nach Groß-/Kleinschreibung.

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

Parameter

typeName
String

Der FullName Typ, nach dem gesucht werden soll.

Gibt zurück

Eine Instanz des angegebenen Typs, die mit dem parameterlosen Konstruktor erstellt wurde; oder null wenn typeName nicht gefunden wird. Der Typ wird mithilfe des Standardordners aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben und auf BindingFlagsPublic oder Instance.

Implementiert

Attribute

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem Nullzeichen beginnt.

- oder -

Die aktuelle Assembly wurde in den Nur-Spiegelungskontext geladen.

typeName ist null.

Es wurde kein übereinstimmende 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 Nur-Spiegelungskontext geladen und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly für die derzeit geladene Laufzeit.

Beispiele

Im folgenden Beispiel wird eine Person Klasse definiert und die CreateInstance(String) Methode aufgerufen, um sie instanziieren zu können.

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 Laufzeit in der Assembly Instanz nicht gefunden typeName werden kann, wird sie zurückgegebennull, anstatt eine Ausnahme auszuwerfen. Dies kann passieren, weil:

  • Sie haben den vollqualifizierten Namen des Typs nicht angegeben.

  • Sie haben den vollqualifizierten Typnamen angegeben, die Groß-/Kleinschreibung stimmt jedoch nicht mit der Groß-/Kleinschreibung der Eigenschaft des Typs Type.FullName überein. Rufen Sie bei einem Vergleich typeName zwischen Groß- und Kleinschreibung mit dem vollständigen Namen des Typs die CreateInstance(String, Boolean) Überladung auf, und geben Sie für das ignoreCase Argument antrue.

  • Der Typ ist in der aktuellen Assembly Instanz nicht vorhanden.

Gilt für:

CreateInstance(String, Boolean)

Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung unterschieden wird.

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

Parameter

typeName
String

Der FullName Typ, nach dem gesucht werden soll.

ignoreCase
Boolean

truedie Groß-/Kleinschreibung des Typnamens zu ignorieren; andernfalls . false

Gibt zurück

Eine Instanz des angegebenen Typs, die mit dem parameterlosen Konstruktor erstellt wurde; oder null wenn typeName nicht gefunden wird. Der Typ wird mithilfe des Standardordners aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben und auf BindingFlagsPublic oder Instance.

Implementiert

Attribute

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem Nullzeichen beginnt.

- oder -

Die aktuelle Assembly wurde in den Nur-Spiegelungskontext geladen.

Es wurde kein übereinstimmende 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 Nur-Spiegelungskontext geladen und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly für die derzeit geladene Laufzeit.

Beispiele

Im folgenden Beispiel wird eine Person Klasse definiert. Anschließend wird die CreateInstance(String) Methode aufgerufen, um sie zu instanziieren, aber da die Groß-/Kleinschreibung des typeName Arguments nicht mit der 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 die Groß-/Kleinschreibung nicht beachtet werden soll, wird die Person Klasse gefunden, und ein Person Objekt wird 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 Laufzeit in der Assembly Instanz nicht gefunden typeName werden kann, wird sie zurückgegebennull, anstatt eine Ausnahme auszuwerfen. Dies kann passieren, weil:

  • Sie haben den vollqualifizierten Namen des Typs nicht angegeben.

  • Der Typ ist in der aktuellen Assembly Instanz nicht vorhanden.

Gilt für:

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])

Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs

Sucht den angegebenen Typ aus dieser Assembly und erstellt eine Instanz davon mithilfe des Systemaktivators, bei der bei optionaler Suche nach Groß-/Kleinschreibung die angegebene Kultur, Argumente und Bindungs- und Aktivierungsattribute vorhanden sind.

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

Parameter

typeName
String

Der FullName Typ, nach dem gesucht werden soll.

ignoreCase
Boolean

truedie Groß-/Kleinschreibung des Typnamens zu ignorieren; andernfalls . false

bindingAttr
BindingFlags

Eine Bitmaske, die sich auf die Art und Weise auswirkt, in der die Suche durchgeführt wird. Der Wert ist eine Kombination aus Bitkennzeichnungen aus BindingFlags.

binder
Binder

Ein Objekt, das die Bindung, die Koersion von Argumenttypen, den Aufruf von Elementen und das Abrufen von MemberInfo Objekten über Spiegelung ermöglicht. Ist binder dies nullder Grund, wird der Standardordner verwendet.

args
Object[]

Ein Array, das die Argumente enthält, die an den Konstruktor übergeben werden sollen. Dieses Array von Argumenten muss in Zahl, Reihenfolge und Eingabe der Parameter des aufgerufenen Konstruktors übereinstimmen. Wenn der parameterlose Konstruktor gewünscht wird, args muss es sich um ein leeres Array oder nulleinen leeren Konstruktor sein.

culture
CultureInfo

Eine Instanz, die zum Steuern der CultureInfo Koersion von Typen verwendet wird. Wenn dies der Fall ist null, wird der CultureInfo aktuelle Thread verwendet. (Dies ist erforderlich, um eine Zeichenfolge zu konvertieren, die 1000 in einen Double Wert darstellt, z. B. da 1000 unterschiedlich durch verschiedene Kulturen dargestellt wird.)

activationAttributes
Object[]

Ein Array mit einem oder mehreren Attributen, die an der Aktivierung teilnehmen können. In der Regel ein Array, das ein einzelnes UrlAttribute Objekt enthält, das die URL angibt, die zum Aktivieren eines Remoteobjekts erforderlich ist. Dieser Parameter bezieht sich auf clientaktive Objekte. Die Clientaktivierung ist eine ältere Technologie, die aus Gründen der Abwärtskompatibilität beibehalten wird, für die neue Entwicklung jedoch nicht empfohlen wird. Verteilte Anwendungen sollten stattdessen Windows Communication Foundation verwenden.

Gibt zurück

Eine Instanz des angegebenen Typs oder null falls typeName nicht gefunden. Die angegebenen Argumente werden zum Auflösen des Typs und zum Binden des Konstruktors verwendet, der zum Erstellen der Instanz verwendet wird.

Implementiert

Attribute

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem Nullzeichen beginnt.

- oder -

Die aktuelle Assembly wurde in den Nur-Spiegelungskontext geladen.

typeName ist null.

Es wurde kein übereinstimmende Konstruktor gefunden.

Ein Array mit nicht leeren Aktivierungsattributen wird an einen Typ übergeben, der nicht von MarshalByRefObject.

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 Nur-Spiegelungskontext geladen und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly für die derzeit geladene Laufzeit.

Gilt für: