Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Assembly.CreateInstance Method

Definition

Sucht einen Typ aus dieser Assembly und erstellt mithilfe der Systemaktivierung eine Instanz dieses Typs.Locates a type from this assembly and creates an instance of it using the system activator.

Überlädt

CreateInstance(String) CreateInstance(String) CreateInstance(String) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

CreateInstance(String) CreateInstance(String) CreateInstance(String) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, using case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName);
public object CreateInstance (string typeName);
abstract member CreateInstance : string -> obj
override this.CreateInstance : string -> obj
Public Function CreateInstance (typeName As String) As Object

Parameter

typeName
String String String String

Der FullName des zu suchenden Typs.The FullName of the type to locate.

Gibt zurück

Eine Instanz des angegebenen Typs, der mit dem parameterlosen Konstruktor erstellt wurde; oder null, wenn typeName nicht gefunden wird.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. Der Typ wird mit dem Standardbinder aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben, und mit BindingFlags auf Public oder Instance festgelegt.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementiert

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem Null-Zeichen beginnt.typeName is an empty string ("") or a string beginning with a null character.

- oder --or- Die aktuelle Assembly wurde in den ReflectionOnly-Kontext geladen.The current assembly was loaded into the reflection-only context.

Es wurde kein übereinstimmender Konstruktor gefunden.No matching constructor was found.

typeName erfordert eine abhängige Assembly, die nicht gefunden werden konnte.typeName requires a dependent assembly that could not be found.

typeName erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.typeName requires a dependent assembly that was found but could not be loaded.

- oder --or- Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly.typeName requires a dependent assembly, but the file is not a valid assembly.

- oder --or- typeName erfordert eine abhängige Assembly, die für eine Version der Laufzeit kompiliert wurde, die höher als die derzeit geladene Version ist.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Beispiele

Im folgenden Beispiel wird eine Person -Klasse definiert und CreateInstance(String) die-Methode aufgerufen, um Sie zu instanziieren.The following example defines a Person class and calls the CreateInstance(String) method to instantiate it.

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 typeName Assembly -Instanz nicht gefunden werden kann, wird null zurückgegeben, anstatt eine Ausnahme auszulösen.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Dies kann folgende Ursache haben:This might happen because:

  • Sie haben den voll qualifizierten Namen des Typs nicht angegeben.You haven't specified the fully qualified name of the type.

  • Sie haben den voll qualifizierten Typnamen angegeben, aber die Groß-/Kleinschreibung entspricht nicht der groß Type.FullName -/Kleinschreibung der-Eigenschaft des Typs.You've specified the fully qualified type name, but its case doesn't match the case of the type's Type.FullName property. typeName Wenn ein Vergleich von mit dem vollständigen Namen des Typs ohne Beachtung der Groß-/Kleinschreibung nicht beachtet werden soll, müssen Sie die CreateInstance(String, Boolean) - true über ignoreCase Ladung aufrufen undFor a case-insensitive comparison of typeName with the type's full name, call the CreateInstance(String, Boolean) overload and specify true for the ignoreCase argument.

  • Der Typ ist in der aktuellen Assembly Instanz nicht vorhanden.The type doesn't exist in the current Assembly instance.

Sicherheit

ReflectionPermission
Wenn Sie spät gebunden durch Mechanismen wie InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])aufgerufen wird.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Zugehörige Enumeration:MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean) CreateInstance(String, Boolean) CreateInstance(String, Boolean) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search.

public:
 virtual System::Object ^ CreateInstance(System::String ^ typeName, bool ignoreCase);
public object CreateInstance (string typeName, bool ignoreCase);
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 String String String

Der FullName des zu suchenden Typs.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

true, um die Groß- und Kleinschreibung des Typnamens zu ignorieren, andernfalls false.true to ignore the case of the type name; otherwise, false.

Gibt zurück

Eine Instanz des angegebenen Typs, der mit dem parameterlosen Konstruktor erstellt wurde; oder null, wenn typeName nicht gefunden wird.An instance of the specified type created with the parameterless constructor; or null if typeName is not found. Der Typ wird mit dem Standardbinder aufgelöst, ohne Kultur- oder Aktivierungsattribute anzugeben, und mit BindingFlags auf Public oder Instance festgelegt.The type is resolved using the default binder, without specifying culture or activation attributes, and with BindingFlags set to Public or Instance.

Implementiert

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem Null-Zeichen beginnt.typeName is an empty string ("") or a string beginning with a null character.

- oder --or- Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen.The current assembly was loaded into the reflection-only context.

Es wurde kein übereinstimmender Konstruktor gefunden.No matching constructor was found.

typeName erfordert eine abhängige Assembly, die nicht gefunden wurde.typeName requires a dependent assembly that could not be found.

typeName erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.typeName requires a dependent assembly that was found but could not be loaded.

- oder --or- Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly.typeName requires a dependent assembly, but the file is not a valid assembly.

- oder --or- typeName erfordert eine abhängige Assembly, die für eine Version der Laufzeit kompiliert wurde, die höher als die derzeit geladene Version ist.typeName requires a dependent assembly that was compiled for a version of the runtime that is later than the currently loaded version.

Beispiele

Im folgenden Beispiel wird eine Person -Klasse definiert.The following example defines a Person class. CreateInstance(String) Anschließend wird die-Methode aufgerufen, um Sie zu instanziieren, aber da die typeName Groß-/Kleinschreibung des Arguments nicht FullName mit der der-Eigenschaft nulldes Typs identisch ist, gibt die Methode zurück.It then calls the CreateInstance(String) method to instantiate it, but because the casing of the typeName argument doesn't match that of the type's FullName property, the method returns null. Wenn das Beispiel die gleiche Zeichenfolge an die CreateInstance(String, Boolean) -Überladung übergibt und angibt, dass beim Vergleich die groß- Person /Kleinschreibung nicht beachtet werden Person soll, wird die-Klasse gefunden, und ein-Objekt wurde erfolgreich instanziiert.When the example passes the same string to the CreateInstance(String, Boolean) overload and specifies that the comparison should be case-insensitive, the Person class is found, and a Person object is successfully instantiated.

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 typeName Assembly -Instanz nicht gefunden werden kann, wird null zurückgegeben, anstatt eine Ausnahme auszulösen.If the runtime is unable to find typeName in the Assembly instance, it returns null instead of throwing an exception. Dies kann folgende Ursache haben:This might happen because:

  • Sie haben den voll qualifizierten Namen des Typs nicht angegeben.You haven't specified the fully qualified name of the type.

  • Der Typ ist in der aktuellen Assembly Instanz nicht vorhanden.The type doesn't exist in the current Assembly instance.

Sicherheit

ReflectionPermission
Wenn Sie spät gebunden durch Mechanismen wie InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])aufgerufen wird.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Zugehörige Enumeration:MemberAccessAssociated enumeration: MemberAccess

CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 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.Locates the specified type from this assembly and creates an instance of it using the system activator, with optional case-sensitive search and having the specified culture, arguments, and binding and activation attributes.

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 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

Parameter

typeName
String String String String

Der FullName des zu suchenden Typs.The FullName of the type to locate.

ignoreCase
Boolean Boolean Boolean Boolean

true, um die Groß- und Kleinschreibung des Typnamens zu ignorieren, andernfalls false.true to ignore the case of the type name; otherwise, false.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine Bitmaske, die sich auf die Ausführung der Suche auswirkt.A bitmask that affects the way in which the search is conducted. Der Wert ist eine Kombination von Bitflags aus BindingFlags.The value is a combination of bit flags from BindingFlags.

binder
Binder Binder 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.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. Wenn binder den Wert null aufweist, wird der Standardbinder verwendet.If binder is null, the default binder is used.

args
Object[]

Ein Array, das die an den Konstruktor zu übergebenden Argumente enthält.An array that contains the arguments to be passed to the constructor. Dieses Array von Argumenten muss bezüglich Anzahl, Reihenfolge und Typ mit den Parametern des aufzurufenden Konstruktors übereinstimmen.This array of arguments must match in number, order, and type the parameters of the constructor to be invoked. Wenn der parameterlose Konstruktor gewünscht ist, muss args ein leeres Array oder null sein.If the parameterless constructor is desired, args must be an empty array or null.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Eine Instanz von CultureInfo für die Steuerung der Umwandlung von Typen.An instance of CultureInfo used to govern the coercion of types. Wenn dies null ist, wird die CultureInfo des aktuellen Threads verwendet.If this is null, the CultureInfo for the current thread is used. (Dies ist z. B. erforderlich, um einen String, der 1000 darstellt, in einen Double-Wert zu konvertieren, da 1000 in verschiedenen Kulturen unterschiedlich dargestellt wird.)(This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.)

activationAttributes
Object[]

Ein Array mit einem oder mehreren Attributen, die an der Aktivierung beteiligt sein können.An array of one or more attributes that can participate in activation. Üblicherweise ein Array, das ein einzelnes UrlAttribute-Objekt enthält, das die zum Aktivieren eines Remoteobjekts erforderliche URL angibt.Typically, an array that contains a single UrlAttribute object that specifies the URL that is required to activate a remote object. Der Parameter ist vom Client aktivierten Objekten zugeordnet.This parameter is related to client-activated objects. 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.Client activation is a legacy technology that is retained for backward compatibility but is not recommended for new development. Für verteilte Anwendungen sollte stattdessen Windows Communication Foundation verwendet werden.Distributed applications should instead use Windows Communication Foundation.

Gibt zurück

Eine Instanz des angegebenen Typs oder null, wenn typeName nicht gefunden wird.An instance of the specified type, or null if typeName is not found. Die angegebenen Argumente werden verwendet, um den Typ aufzulösen und den Konstruktor zu binden, der verwendet wird, um die Instanz zu erstellen.The supplied arguments are used to resolve the type, and to bind the constructor that is used to create the instance.

Implementiert

Ausnahmen

typeName ist eine leere Zeichenfolge ("") oder eine Zeichenfolge, die mit einem NULL-Zeichen anfängt.typeName is an empty string ("") or a string beginning with a null character.

- oder --or- Die aktuelle Assembly wurde in den ReflectionOnly-Kontext geladen.The current assembly was loaded into the reflection-only context.

Es wurde kein übereinstimmender Konstruktor gefunden.No matching constructor was found.

Ein nicht leeres Array von Aktivierungsattributen wird an einen Typ übergeben, der nicht von MarshalByRefObject erbt.A non-empty activation attributes array is passed to a type that does not inherit from MarshalByRefObject.

typeName erfordert eine abhängige Assembly, die nicht gefunden wurde.typeName requires a dependent assembly that could not be found.

typeName erfordert eine abhängige Assembly, die gefunden wurde, aber nicht geladen werden konnte.typeName requires a dependent assembly that was found but could not be loaded.

- oder --or- Die aktuelle Assembly wurde in den reflektionsbezogenen Kontext geladen, und typeName erfordert eine abhängige Assembly, die nicht vorab geladen wurde.The current assembly was loaded into the reflection-only context, and typeName requires a dependent assembly that was not preloaded.

typeName erfordert eine abhängige Assembly, die Datei ist jedoch keine gültige Assembly.typeName requires a dependent assembly, but the file is not a valid assembly.

- oder --or- typeName erfordert eine abhängige Assembly, die für eine Version der Laufzeit kompiliert wurde, die höher als die derzeit geladene Version ist.typeName requires a dependent assembly which that was compiled for a version of the runtime that is later than the currently loaded version.

Sicherheit

ReflectionPermission
Wenn Sie spät gebunden durch Mechanismen wie InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])aufgerufen wird.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Zugehörige Enumeration:MemberAccessAssociated enumeration: MemberAccess

SecurityPermission
zum Erstellen einer Instanz eines Delegaten.to create an instance of a delegate. Zugehörige Enumeration:UnmanagedCodeAssociated enumeration: UnmanagedCode

Gilt für: