Bagikan melalui


Assembly.CreateInstance Metode

Definisi

Menemukan jenis dari rakitan ini dan membuat instansnya menggunakan aktivator sistem.

Overload

CreateInstance(String)

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, menggunakan pencarian peka huruf besar/kecil.

CreateInstance(String, Boolean)

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional.

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

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional dan memiliki budaya, argumen, dan atribut pengikatan dan aktivasi yang ditentukan.

CreateInstance(String)

Sumber:
Assembly.cs
Sumber:
Assembly.cs
Sumber:
Assembly.cs

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, menggunakan pencarian peka huruf besar/kecil.

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

Parameter

typeName
String

FullName Jenis yang akan ditemukan.

Mengembalikan

Instans dari jenis yang ditentukan yang dibuat dengan konstruktor tanpa parameter; atau null jika typeName tidak ditemukan. Jenis ini diselesaikan menggunakan pengikat default, tanpa menentukan atribut budaya atau aktivasi, dan dengan BindingFlags diatur ke Public atau Instance.

Penerapan

Pengecualian

typeName adalah string kosong ("") atau string yang dimulai dengan karakter null.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi.

typeNameadalah null.

Tidak ditemukan konstruktor yang cocok.

typeName memerlukan rakitan dependen yang tidak dapat ditemukan.

typeName memerlukan rakitan dependen yang ditemukan tetapi tidak dapat dimuat.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi, dan typeName memerlukan rakitan dependen yang tidak dimuat sebelumnya.

typeName memerlukan rakitan dependen, tetapi file bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Contoh

Contoh berikut mendefinisikan Person kelas dan memanggil CreateInstance(String) metode untuk membuat instans.

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'

Keterangan

Jika runtime tidak dapat ditemukan typeName dalam Assembly instans, runtime mengembalikan alih-alih null melemparkan pengecualian. Ini mungkin terjadi karena:

  • Anda belum menentukan nama jenis yang sepenuhnya memenuhi syarat.

  • Anda telah menentukan nama jenis yang sepenuhnya memenuhi syarat, tetapi kasusnya tidak cocok dengan kasus properti jenis Type.FullName . Untuk perbandingan typeName yang tidak peka huruf besar/kecil dengan nama lengkap jenis, panggil CreateInstance(String, Boolean) kelebihan beban dan tentukan true untuk ignoreCase argumen .

  • Jenis tidak ada dalam instans saat ini Assembly .

Berlaku untuk

CreateInstance(String, Boolean)

Sumber:
Assembly.cs
Sumber:
Assembly.cs
Sumber:
Assembly.cs

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional.

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

Parameter

typeName
String

FullName Jenis yang akan ditemukan.

ignoreCase
Boolean

true untuk mengabaikan kasus nama jenis; jika tidak, false.

Mengembalikan

Instans dari jenis yang ditentukan yang dibuat dengan konstruktor tanpa parameter; atau null jika typeName tidak ditemukan. Jenis ini diselesaikan menggunakan pengikat default, tanpa menentukan atribut budaya atau aktivasi, dan dengan BindingFlags diatur ke Public atau Instance.

Penerapan

Pengecualian

typeName adalah string kosong ("") atau string yang dimulai dengan karakter null.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi.

Tidak ditemukan konstruktor yang cocok.

typeNameadalah null.

typeName memerlukan rakitan dependen yang tidak dapat ditemukan.

typeName memerlukan rakitan dependen yang ditemukan tetapi tidak dapat dimuat.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi, dan typeName memerlukan rakitan dependen yang tidak dimuat sebelumnya.

typeName memerlukan rakitan dependen, tetapi file bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Contoh

Contoh berikut menentukan kelas Person. Kemudian memanggil CreateInstance(String) metode untuk membuat instansnya, tetapi karena casing typeName argumen tidak cocok dengan properti jenis FullName , metode mengembalikan null. Ketika contoh meneruskan string yang sama ke CreateInstance(String, Boolean) kelebihan beban dan menentukan bahwa perbandingan harus tidak peka huruf besar/kecil, Person kelas ditemukan, dan Person objek berhasil dibuat.

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'

Keterangan

Jika runtime tidak dapat ditemukan typeName dalam Assembly instans, runtime mengembalikan alih-alih null melemparkan pengecualian. Ini mungkin terjadi karena:

  • Anda belum menentukan nama jenis yang sepenuhnya memenuhi syarat.

  • Jenis tidak ada dalam instans saat ini Assembly .

Berlaku untuk

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

Sumber:
Assembly.cs
Sumber:
Assembly.cs
Sumber:
Assembly.cs

Menemukan jenis yang ditentukan dari rakitan ini dan membuat instansnya menggunakan aktivator sistem, dengan pencarian peka huruf besar/kecil opsional dan memiliki budaya, argumen, dan atribut pengikatan dan aktivasi yang ditentukan.

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

Parameter

typeName
String

FullName Jenis yang akan ditemukan.

ignoreCase
Boolean

true untuk mengabaikan kasus nama jenis; jika tidak, false.

bindingAttr
BindingFlags

Bitmask yang memengaruhi cara pencarian dilakukan. Nilai adalah kombinasi bendera bit dari BindingFlags.

binder
Binder

Objek yang memungkinkan pengikatan, pemaksian jenis argumen, pemanggilan anggota, dan pengambilan MemberInfo objek melalui pantulan. Jika binder adalah null, pengikat default digunakan.

args
Object[]

Array yang berisi argumen yang akan diteruskan ke konstruktor. Array argumen ini harus cocok dalam angka, urutan, dan ketik parameter konstruktor yang akan dipanggil. Jika konstruktor tanpa parameter diinginkan, args harus berupa array kosong atau null.

culture
CultureInfo

Instans yang CultureInfo digunakan untuk mengatur pemasukan jenis. Jika ini adalah null, CultureInfo untuk utas saat ini digunakan. (Ini diperlukan untuk mengonversi string yang mewakili 1000 menjadi Double nilai, misalnya, karena 1000 diwakili secara berbeda oleh budaya yang berbeda.)

activationAttributes
Object[]

Array dari satu atau beberapa atribut yang dapat berpartisipasi dalam aktivasi. Biasanya, array yang berisi satu UrlAttribute objek yang menentukan URL yang diperlukan untuk mengaktifkan objek jarak jauh. Parameter ini terkait dengan objek yang diaktifkan klien. Aktivasi klien adalah teknologi warisan yang dipertahankan untuk kompatibilitas mundur tetapi tidak direkomendasikan untuk pengembangan baru. Aplikasi terdistribusi harus menggunakan Windows Communication Foundation.

Mengembalikan

Instans dari jenis yang ditentukan, atau null jika typeName tidak ditemukan. Argumen yang disediakan digunakan untuk menyelesaikan jenis, dan untuk mengikat konstruktor yang digunakan untuk membuat instans.

Penerapan

Pengecualian

typeName adalah string kosong ("") atau string yang dimulai dengan karakter null.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi.

typeNameadalah null.

Tidak ditemukan konstruktor yang cocok.

Array atribut aktivasi yang tidak kosong diteruskan ke jenis yang tidak mewarisi dari MarshalByRefObject.

typeName memerlukan rakitan dependen yang tidak dapat ditemukan.

typeName memerlukan rakitan dependen yang ditemukan tetapi tidak dapat dimuat.

-atau-

Rakitan saat ini dimuat ke dalam konteks khusus refleksi, dan typeName memerlukan rakitan dependen yang tidak dimuat sebelumnya.

typeName memerlukan rakitan dependen, tetapi file bukan rakitan yang valid untuk runtime yang saat ini dimuat.

Berlaku untuk