Udostępnij za pośrednictwem


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.

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

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.

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'

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

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.

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

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.

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'

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

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.

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

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