Assembly.CreateInstance Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bu derlemeden bir tür bulur ve sistem etkinleştiricisini kullanarak bir örneğini oluşturur.
Aşırı Yüklemeler
CreateInstance(String) |
Belirtilen türü bu derlemeden bulur ve büyük/küçük harfe duyarlı arama kullanarak sistem etkinleştiricisini kullanarak bir örneğini oluşturur. |
CreateInstance(String, Boolean) |
Belirtilen türü bu derlemeden bulur ve isteğe bağlı büyük/küçük harfe duyarlı arama ile sistem etkinleştiricisini kullanarak bir örneğini oluşturur. |
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) |
Bu derlemeden belirtilen türü bulur ve isteğe bağlı büyük/küçük harfe duyarlı arama ve belirtilen kültüre, bağımsız değişkenlere ve bağlama ve etkinleştirme özniteliklerine sahip olan sistem etkinleştiricisini kullanarak bir örneği oluşturur. |
CreateInstance(String)
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
Belirtilen türü bu derlemeden bulur ve büyük/küçük harfe duyarlı arama kullanarak sistem etkinleştiricisini kullanarak bir örneğini oluşturur.
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
Parametreler
Döndürülenler
Parametresiz oluşturucu ile oluşturulan belirtilen türün bir örneği; veya null
bulunamazsa typeName
. Tür, varsayılan bağlayıcı kullanılarak, kültür veya etkinleştirme öznitelikleri belirtilmeden ve BindingFlags veya Instance
olarak ayarlandığında Public
çözümlenir.
Uygulamalar
Özel durumlar
typeName
boş bir dize ("") veya null karakterle başlayan bir dizedir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi.
typeName
, null
değeridir.
Eşleşen bir oluşturucu bulunamadı.
typeName
bulunamayan bağımlı bir derleme gerektirir.
typeName
bulunan ancak yüklenemeyen bağımlı bir derleme gerektirir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi ve typeName
önceden yüklenmeyen bağımlı bir derleme gerektiriyor.
typeName
bağımlı bir derleme gerektirir, ancak dosya şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.
Örnekler
Aşağıdaki örnek bir Person
sınıfı tanımlar ve örneği oluşturmak için yöntemini çağırır CreateInstance(String) .
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'
Açıklamalar
Çalışma zamanı örnekte bulamıyorsa typeName
Assembly , özel durum atmak yerine döndürür null
. Bunun nedeni aşağıdakiler olabilir:
Türün tam adını belirtmemişsiniz.
Tam tür adını belirttiniz, ancak büyük/küçük harf türü Type.FullName özelliğinin durumuyla eşleşmiyor. türünün tam adıyla büyük/küçük harfe duyarsız bir karşılaştırma
typeName
için aşırı yüklemeyi çağırın CreateInstance(String, Boolean) ve bağımsız değişkeniniignoreCase
belirtintrue
.Tür geçerli Assembly örnekte yok.
Şunlara uygulanır
CreateInstance(String, Boolean)
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
Belirtilen türü bu derlemeden bulur ve isteğe bağlı büyük/küçük harfe duyarlı arama ile sistem etkinleştiricisini kullanarak bir örneğini oluşturur.
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
Parametreler
- ignoreCase
- Boolean
true
tür adının büyük/küçük harflerini yoksaymak için; aksi takdirde , false
.
Döndürülenler
Parametresiz oluşturucu ile oluşturulan belirtilen türün bir örneği; veya null
bulunamazsa typeName
. Tür, varsayılan bağlayıcı kullanılarak, kültür veya etkinleştirme öznitelikleri belirtilmeden ve BindingFlags veya Instance
olarak ayarlandığında Public
çözümlenir.
Uygulamalar
Özel durumlar
typeName
boş bir dize ("") veya null karakterle başlayan bir dizedir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi.
Eşleşen bir oluşturucu bulunamadı.
typeName
, null
değeridir.
typeName
bulunamayan bağımlı bir derleme gerektirir.
typeName
bulunan ancak yüklenemeyen bağımlı bir derleme gerektirir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi ve typeName
önceden yüklenmeyen bağımlı bir derleme gerektiriyor.
typeName
bağımlı bir derleme gerektirir, ancak dosya şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.
Örnekler
Aşağıdaki örnek bir Person
sınıfı tanımlar. Ardından örneği için yöntemini çağırır CreateInstance(String) , ancak bağımsız değişkenin typeName
büyük/küçük harfle olması türün FullName özelliğiyle eşleşmediğinden yöntemi döndürür null
. Örnek aynı dizeyi CreateInstance(String, Boolean) aşırı yüklemeye geçirip karşılaştırmanın büyük/küçük harfe duyarsız olması gerektiğini belirttiğinde, Person
sınıf bulunur ve bir Person
nesnenin örneği başarıyla oluşturulur.
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'
Açıklamalar
Çalışma zamanı örnekte bulamıyorsa typeName
Assembly , özel durum atmak yerine döndürür null
. Bunun nedeni aşağıdakiler olabilir:
Türün tam adını belirtmemişsiniz.
Tür geçerli Assembly örnekte yok.
Şunlara uygulanır
CreateInstance(String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
- Kaynak:
- Assembly.cs
Bu derlemeden belirtilen türü bulur ve isteğe bağlı büyük/küçük harfe duyarlı arama ve belirtilen kültüre, bağımsız değişkenlere ve bağlama ve etkinleştirme özniteliklerine sahip olan sistem etkinleştiricisini kullanarak bir örneği oluşturur.
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
Parametreler
- ignoreCase
- Boolean
true
tür adının büyük/küçük harflerini yoksaymak için; aksi takdirde , false
.
- bindingAttr
- BindingFlags
Aramanın nasıl yürütüldüğünü etkileyen bit maskesi. değeri, 'den BindingFlagsbit bayraklarının bir birleşimidir.
- binder
- Binder
Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma aracılığıyla almayı MemberInfo
sağlayan bir nesne. ise binder
null
, varsayılan bağlayıcı kullanılır.
- args
- Object[]
Oluşturucuya geçirilecek bağımsız değişkenleri içeren bir dizi. Bu bağımsız değişken dizisi, çağrılacak oluşturucunun parametreleriyle sayı, sıra ve tür olarak eşleşmelidir. Parametresiz oluşturucu isteniyorsa, args
boş bir dizi veya null
olmalıdır.
- culture
- CultureInfo
Türlerin CultureInfo
zorlamasını idare etmek için kullanılan bir örnek. Bu ise null
, CultureInfo geçerli iş parçacığı için kullanılır. (Bu, 1000'i temsil eden bir dizeyi bir Double değere dönüştürmek için gereklidir, örneğin, 1000 farklı kültürler tarafından farklı temsil edilir.)
- activationAttributes
- Object[]
Etkinleştirmeye katılabilen bir veya daha fazla öznitelik dizisi. Genellikle, uzak nesneyi etkinleştirmek için gereken URL'yi belirten tek UrlAttribute bir nesne içeren bir dizi. Bu parametre istemci tarafından etkinleştirilen nesnelerle ilgilidir. İstemci etkinleştirmesi, geriye dönük uyumluluk için korunan ancak yeni geliştirme için önerilmez eski bir teknolojidir. Dağıtılmış uygulamalar bunun yerine Windows Communication Foundation kullanmalıdır.
Döndürülenler
Belirtilen türün bir örneği veya null
bulunamazsa typeName
. Sağlanan bağımsız değişkenler türü çözümlemek ve örneği oluşturmak için kullanılan oluşturucuyu bağlamak için kullanılır.
Uygulamalar
Özel durumlar
typeName
boş bir dize ("") veya null karakterle başlayan bir dizedir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi.
typeName
, null
değeridir.
Eşleşen bir oluşturucu bulunamadı.
Boş olmayan etkinleştirme öznitelikleri dizisi, 'den MarshalByRefObjectdevralınmayan bir türe geçirilir.
typeName
bulunamayan bağımlı bir derleme gerektirir.
typeName
bulunan ancak yüklenemeyen bağımlı bir derleme gerektirir.
-veya-
Geçerli derleme yalnızca yansıma bağlamı içine yüklendi ve typeName
önceden yüklenmeyen bağımlı bir derleme gerektiriyor.
typeName
bağımlı bir derleme gerektirir, ancak dosya şu anda yüklü olan çalışma zamanı için geçerli bir derleme değildir.