Aracılığıyla paylaş


Assembly.CreateInstance Yöntem

Tanım

Bu derlemeden bir tür bulur ve sistem etkinleştiricisini kullanarak bunun bir örneğini oluşturur.

Aşırı Yüklemeler

Name Description
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 sistem etkinleştiricisini kullanarak bunun bir örneğini oluşturur.

CreateInstance(String)

Kaynak:
Assembly.cs
Kaynak:
Assembly.cs
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName);
public object CreateInstance(string typeName);
public object? CreateInstance(string typeName);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string -> obj
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

Bulunacak FullName türün türü.

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 veya Instanceolarak ayarlanmadan BindingFlagsPublic çözülür.

Uygulamalar

Öznitelikler

Ö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'e eşittir.

Eşleşen 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 , bir ö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 karşılaştırması typeName için aşırı yüklemeyi çağırın CreateInstance(String, Boolean) ve bağımsız değişken için ignoreCase belirtintrue.

  • Türü geçerli Assembly örnekte yok.

Şunlara uygulanır

CreateInstance(String, Boolean)

Kaynak:
Assembly.cs
Kaynak:
Assembly.cs
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
public object? CreateInstance(string typeName, bool ignoreCase);
public object CreateInstance(string typeName, bool ignoreCase);
public object? CreateInstance(string typeName, bool ignoreCase);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
member this.CreateInstance : string * bool -> obj
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

Bulunacak FullName türün türü.

ignoreCase
Boolean

true tür adının büyük/küçük harf durumunu 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 veya Instanceolarak ayarlanmadan BindingFlagsPublic çözülür.

Uygulamalar

Öznitelikler

Ö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 oluşturucu bulunamadı.

typeName, null'e eşittir.

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 oluşturma yöntemini çağırır CreateInstance(String) , ancak bağımsız değişkenin typeName büyük/küçük harfle yazılması 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çirir ve karşılaştırmanın büyük/küçük harfe duyarsız olması gerektiğini belirtirse, 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 , bir ö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
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 sistem etkinleştiricisini kullanarak bunun bir örneğini 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")]
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 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Assembly.CreateInstance is not supported with trimming. Use Type.GetType instead.")>]
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
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

Bulunacak FullName türün türü.

ignoreCase
Boolean

true tür adının büyük/küçük harf durumunu yoksaymak için; aksi takdirde , false.

bindingAttr
BindingFlags

Aramanın nasıl yürütüldüğünü etkileyen bir bit maskesi. değeri, 'den BindingFlagsgelen bit bayraklarının bir bileşimidir.

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma yoluyla 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 örneği. Bu isenullCultureInfo, geçerli iş parçacığı için kullanılır. (Bu, 1000'i temsil eden bir Double dizeyi bir 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 bir nesneyi etkinleştirmek için gereken URL'yi belirten tek UrlAttribute bir nesne içeren 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 nulltypeName bulunamaz. 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

Öznitelikler

Ö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'e eşittir.

Eşleşen oluşturucu bulunamadı.

Boş olmayan bir etkinleştirme öznitelikleri dizisi, öğesinden 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