Assembly.CreateInstance Metoda

Definicja

Lokalizuje typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu.

Przeciążenia

CreateInstance(String)

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu przy użyciu wyszukiwania uwzględniającego wielkość liter.

CreateInstance(String, Boolean)

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem z uwzględnieniem wielkości liter.

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

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem uwzględniającym wielkość liter i określonymi kulturami, argumentami oraz atrybutami powiązania i aktywacji.

CreateInstance(String)

Źródło:
Assembly.cs
Źródło:
Assembly.cs
Źródło:
Assembly.cs

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu przy użyciu wyszukiwania uwzględniającego wielkość liter.

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

Parametry

typeName
String

Typ FullName do zlokalizowania.

Zwraca

Wystąpienie określonego typu utworzone za pomocą konstruktora bez parametrów; lub null jeśli typeName nie zostanie znaleziony. Typ jest rozpoznawany przy użyciu domyślnego powiązania, bez określania atrybutów kultury lub aktywacji oraz z ustawioną wartością BindingFlagsPublic lub Instance.

Implementuje

Wyjątki

typeName jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia.

typeName to null.

Nie znaleziono pasującego konstruktora.

typeName wymaga zestawu zależnego, którego nie można odnaleźć.

typeName wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName wymaga zależnego zestawu, który nie został wstępnie załadowany.

typeName wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.

Przykłady

W poniższym przykładzie zdefiniowano klasę i wywołaliśmy metodę PersonCreateInstance(String) , aby utworzyć jej wystąpienie.

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'

Uwagi

Jeśli środowisko uruchomieniowe nie może znaleźć typeName w wystąpieniu Assembly , zwraca null wartość zamiast zgłaszać wyjątek. Może się tak zdarzyć, ponieważ:

  • Nie określono w pełni kwalifikowanej nazwy typu.

  • Określono w pełni kwalifikowaną nazwę typu, ale jej wielkość liter nie jest zgodna Type.FullName z wielkością liter właściwości typu. W przypadku porównania typeName bez uwzględniania wielkości liter z pełną nazwą typu wywołaj CreateInstance(String, Boolean) przeciążenie i określ true argument ignoreCase .

  • Typ nie istnieje w bieżącym Assembly wystąpieniu.

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.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)

Źródło:
Assembly.cs
Źródło:
Assembly.cs
Źródło:
Assembly.cs

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem z uwzględnieniem wielkości liter.

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

Parametry

typeName
String

Typ FullName do zlokalizowania.

ignoreCase
Boolean

true ignorować wielkość liter nazwy typu; w przeciwnym razie , false.

Zwraca

Wystąpienie określonego typu utworzone za pomocą konstruktora bez parametrów; lub null jeśli typeName nie zostanie znaleziony. Typ jest rozpoznawany przy użyciu domyślnego powiązania, bez określania atrybutów kultury lub aktywacji oraz z ustawioną wartością BindingFlagsPublic lub Instance.

Implementuje

Wyjątki

typeName jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia.

Nie znaleziono pasującego konstruktora.

typeName to null.

typeName wymaga zestawu zależnego, którego nie można odnaleźć.

typeName wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName wymaga zależnego zestawu, który nie został wstępnie załadowany.

typeName wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.

Przykłady

W poniższym przykładzie zdefiniowano klasę Person . Następnie wywołuje metodę CreateInstance(String) , aby utworzyć wystąpienie, ale ponieważ wielkość liter typeName argumentu nie jest zgodna z właściwością typu FullName , metoda zwraca wartość null. Gdy przykład przekazuje ten sam ciąg do CreateInstance(String, Boolean) przeciążenia i określa, że porównanie powinno być bez uwzględniania wielkości liter, Person klasa zostanie znaleziona, a Person obiekt zostanie pomyślnie utworzony.

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'

Uwagi

Jeśli środowisko uruchomieniowe nie może znaleźć typeName w wystąpieniu Assembly , zwraca null wartość zamiast zgłaszać wyjątek. Może się tak zdarzyć, ponieważ:

  • Nie określono w pełni kwalifikowanej nazwy typu.

  • Typ nie istnieje w bieżącym Assembly wystąpieniu.

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.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[])

Źródło:
Assembly.cs
Źródło:
Assembly.cs
Źródło:
Assembly.cs

Lokalizuje określony typ z tego zestawu i tworzy jego wystąpienie przy użyciu aktywatora systemu z opcjonalnym wyszukiwaniem uwzględniającym wielkość liter i określonymi kulturami, argumentami oraz atrybutami powiązania i aktywacji.

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

Parametry

typeName
String

Typ FullName do zlokalizowania.

ignoreCase
Boolean

true ignorować wielkość liter nazwy typu; w przeciwnym razie , false.

bindingAttr
BindingFlags

Maska bitowa, która wpływa na sposób przeprowadzania wyszukiwania. Wartość jest kombinacją flag bitowych z BindingFlags.

binder
Binder

Obiekt, który umożliwia powiązanie, przymus typów argumentów, wywołanie elementów członkowskich i pobieranie MemberInfo obiektów za pośrednictwem odbicia. Jeśli binder parametr ma nullwartość , jest używany domyślny binder.

args
Object[]

Tablica zawierająca argumenty, które mają zostać przekazane do konstruktora. Ta tablica argumentów musi być zgodna z liczbą, kolejnością i typem parametrów konstruktora do wywołania. Jeśli wymagany jest konstruktor bez parametrów, args musi być pustą tablicą lub null.

culture
CultureInfo

Wystąpienie używane do nadzorowania CultureInfo przymusu typów. Jeśli jest nullto wartość , CultureInfo używany jest element dla bieżącego wątku. (Jest to konieczne, aby przekonwertować ciąg reprezentujący 1000 na Double wartość, na przykład ponieważ 1000 jest reprezentowane inaczej przez różne kultury).

activationAttributes
Object[]

Tablica jednego lub więcej atrybutów, które mogą brać udział w aktywacji. Zazwyczaj tablica zawierająca pojedynczy UrlAttribute obiekt, który określa adres URL wymagany do aktywowania obiektu zdalnego. Ten parametr jest związany z obiektami aktywowanymi przez klienta. Aktywacja klienta to starsza technologia, która jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie jest zalecana w przypadku nowego programowania. Aplikacje rozproszone powinny zamiast tego używać programu Windows Communication Foundation.

Zwraca

Wystąpienie określonego typu lub null jeśli typeName nie zostanie znalezione. Podane argumenty są używane do rozpoznawania typu i powiązania konstruktora używanego do utworzenia wystąpienia.

Implementuje

Wyjątki

typeName jest pustym ciągiem ("") lub ciągiem rozpoczynającym się od znaku null.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia.

typeName to null.

Nie znaleziono pasującego konstruktora.

Tablica atrybutów aktywacji niepustych jest przekazywana do typu, który nie dziedziczy z MarshalByRefObjectklasy .

typeName wymaga zestawu zależnego, którego nie można odnaleźć.

typeName wymaga zestawu zależnego, który został znaleziony, ale nie można go załadować.

-lub-

Bieżący zestaw został załadowany do kontekstu tylko odbicia i typeName wymaga zależnego zestawu, który nie został wstępnie załadowany.

typeName wymaga zestawu zależnego, ale plik nie jest prawidłowym zestawem dla aktualnie załadowanego środowiska uruchomieniowego.

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.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