Assembly.CreateInstance Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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.
typeName
adalah 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 tentukantrue
untukignoreCase
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
- 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.
typeName
adalah 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
- 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.
typeName
adalah 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.