Aracılığıyla paylaş


Assembly.CreateInstance Yöntem

Tanım

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

typeName
String

FullName Bulunacak türün değeri.

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 Instanceolarak 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 typeNameAssembly , ö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şkenini ignoreCase 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

typeName
String

FullName Bulunacak türün değeri.

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 Instanceolarak 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 typeNameAssembly , ö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

typeName
String

FullName Bulunacak türün değeri.

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 bindernull, 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 nullolmalı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.

Şunlara uygulanır