Aracılığıyla paylaş


Type.GetType Yöntem

Tanım

Belirtilen türü temsil eden bir Type nesne alır.

Aşırı Yüklemeler

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Belirtilen ada sahip türü alır, büyük/küçük harfe duyarlı bir arama yapılıp yapılmayacağını ve tür bulunamazsa özel durum oluşturulup oluşturulmayacağını belirtir ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

GetType()

Geçerli Typeöğesini alır.

GetType(String)

Type Belirtilen ada sahip olan öğesini alır ve büyük/küçük harfe duyarlı bir arama gerçekleştirir.

GetType(String, Boolean)

Type Belirtilen adla öğesini alır, büyük/küçük harfe duyarlı bir arama gerçekleştirir ve tür bulunamazsa özel durum oluşturulup oluşturulmayacağını belirtir.

GetType(String, Boolean, Boolean)

Type Türün bulunamazsa özel durum oluşturup oluşturmayacağını ve büyük/küçük harfe duyarlı bir arama yapılıp yapılmayacağını belirterek belirtilen ada sahip öğesini alır.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Türü belirtilen adla alır ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Belirtilen ada sahip türü alır, tür bulunamazsa özel durum oluşturulup oluşturulmayacağını belirtir ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Belirtilen ada sahip türü alır, büyük/küçük harfe duyarlı bir arama yapılıp yapılmayacağını ve tür bulunamazsa özel durum oluşturulup oluşturulmayacağını belirtir ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

Parametreler

typeName
String

Alınacak türün adı. typeResolver Parametre sağlanmışsa, tür adı çözümlenebilen herhangi bir dize typeResolver olabilir. assemblyResolver Parametre sağlanmışsa veya standart tür çözümlemesi kullanılıyorsa, typeName türün yürütülmekte olan derlemede veya mscorlib.dll/System.Private.CoreLib.dll olmadığı sürece, ad alanına göre nitelenmiş tür adını sağlamak yeterli değilse, derlemenin nitelenmiş adı olmalıdır (bkzAssemblyQualifiedName. ).

assemblyResolver
Func<AssemblyName,Assembly>

içinde typeNamebelirtilen derlemeyi bulup döndüren bir yöntem. Derleme adı nesnesi AssemblyName olarak geçirilirassemblyResolver. Bir derlemenin assemblyResolver adını içermiyorsa typeName çağrılmıyor. assemblyResolver Sağlanmazsa standart montaj çözünürlüğü gerçekleştirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanlardan yöntem geçirmeyin. Bunun yapılması, kötü amaçlı kod için ayrıcalıkların yükseltilmesine neden olabilir. Yalnızca sağladığınız veya bildiğiniz yöntemleri kullanın.

typeResolver
Func<Assembly,String,Boolean,Type>

tarafından veya standart derleme çözümlemesi tarafından typeName döndürülen assemblyResolver derlemeden tarafından belirtilen türü bulup döndüren bir yöntem. Hiçbir derleme sağlanmazsa, yöntemi bir tane sağlayabilir. yöntemi ayrıca büyük/küçük harfe duyarsız arama yapılıp yapılmayacağını belirten bir parametre alır; değeri ignoreCase bu parametreye geçirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanlardan yöntem geçirmeyin.

throwOnError
Boolean

true türü bulunamazsa özel durum oluşturma; false öğesini döndürecek null. Belirtme, false diğer bazı özel durum koşullarını da gizler, ancak bunların tümünü gizlemez. Özel Durumlar bölümüne bakın.

ignoreCase
Boolean

trueiçin büyük/küçük harfe duyarlı olmayan bir arama yapmak üzere typeNamefalse için büyük/küçük harfe duyarlı bir arama yapmak içintypeName.

Döndürülenler

Belirtilen ada sahip tür. Tür bulunamazsa parametresi döndürülür throwOnError veya null özel durum oluşturulur belirtir. Bazı durumlarda, değerinden throwOnErrorbağımsız olarak bir özel durum oluşturulur. Özel Durumlar bölümüne bakın.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

throwOnError ve true türü bulunamadı.

-veya-

throwOnError typeName ve true ekli sekme gibi geçersiz karakterler içeriyor.

-veya-

throwOnError ve truetypeName boş bir dizedir.

-veya-

throwOnError typeName ve true geçersiz boyuta sahip bir dizi türünü temsil eder.

-veya-

typeName bir dizisini TypedReferencetemsil eder.

Tür adı ve derleme adı olarak ayrıştırıldığında typeName bir hata oluşur (örneğin, basit tür adı sıralanmamış bir özel karakter içerdiğinde).

-veya-

throwOnError typeName ve true geçersiz söz dizimi içeriyor (örneğin, "MyType[,*,]").

-veya-

typeName, işaretçi türü, türü veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

throwOnError ve true derleme veya bağımlılıklarından biri bulunamadı.

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

-veya-

typeName geçersiz bir derleme adı içeriyor.

-veya-

typeName tür adı olmayan geçerli bir derleme adıdır.

Derleme veya bağımlılıklarından biri, şu anda yüklü olan çalışma zamanı için geçerli bir derleme değil.

Açıklamalar

Bu API hakkında daha fazla bilgi için bkz . Type.GetType için ek API açıklamaları.

Şunlara uygulanır

GetType()

Kaynak:
Type.cs
Kaynak:
Type.cs
Kaynak:
Type.cs

Geçerli Typeöğesini alır.

public:
 Type ^ GetType();
public:
 virtual Type ^ GetType();
public Type GetType ();
override this.GetType : unit -> Type
Public Function GetType () As Type

Döndürülenler

Geçerli Type.

Uygulamalar

Özel durumlar

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

Ayrıca bkz.

Şunlara uygulanır

GetType(String)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Belirtilen ada sahip olan öğesini Type alır ve büyük/küçük harfe duyarlı bir arama gerçekleştirir.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
public static Type? GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Parametreler

typeName
String

Alınacak türün derleme nitelikli adı. Bkz. AssemblyQualifiedName. Tür şu anda yürütülen derlemede veya mscorlib.dll/System.Private.CoreLib.dll içindeyse, ad alanı tarafından nitelenmiş tür adını sağlamak yeterlidir.

Döndürülenler

Bulunursa belirtilen ada sahip tür; aksi takdirde , null.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

typeName, işaretçi türü, türü veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

typeNamegeçersiz bir türü temsil eder, örneğin dizisi.TypedReference

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine temel sınıf özel durumunu IOExceptionyakalayın.

Derleme şu anda yüklü olan çalışma zamanı için geçerli değil.

Örnekler

Aşağıdaki örnek, türünü System.Int32 alır ve özelliğini System.Int32görüntülemek FullName için bu tür nesnesini kullanır.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Açıklamalar

başka bir derlemedeki bir Type tür için nesnesi almak için yöntemini kullanabilirsinizGetType. Derlemenin nitelenmiş adını biliyorsanız, bu nesne öğesinden AssemblyQualifiedNameelde edilebilir. GetType içinde belirtilen derlemenin yüklenmesine typeNameneden olur. Ayrıca yöntemini kullanarak Assembly.Load bir derleme yükleyebilir ve nesneleri almak Type için veya Assembly.GetTypes yöntemini kullanabilirsinizAssembly.GetType. Bir tür derleme zamanında programınız tarafından bilinen bir derlemedeyse, C# dilinde veya GetType Visual Basic'teki işleçte kullanmak typeof daha verimlidir.

Not

Bulunamazsa typeName yöntemine yapılan GetType(String) çağrı döndürür null. Özel durum oluşturmaz. Özel durumun oluşturup oluşturmadığını denetlemek için parametresi olan yönteminin throwOnError aşırı yüklemesini GetType çağırın.

GetType yalnızca diskten yüklenen derlemelerde çalışır. Hizmetleri kullanarak System.Reflection.Emit tanımlanan dinamik derlemede tanımlanan bir türü aramak için çağırırsanız GetType tutarsız davranışlar yaşayabilirsiniz. Davranış, dinamik derlemenin kalıcı olup olmamasına, yani numaralandırmanın RunAndSave veya Save erişim modları kullanılarak oluşturulup oluşturulmadığına System.Reflection.Emit.AssemblyBuilderAccess bağlıdır. Dinamik derleme kalıcıysa ve çağrılmadan önce GetType diske yazılmışsa, yükleyici kaydedilen derlemeyi diskte bulur, bu derlemeyi yükler ve türü bu derlemeden alır. Çağrıldığında GetType derleme diske kaydedilmemişse yöntemi döndürür null. GetType geçici dinamik derlemeleri anlamaz; bu nedenle, geçici dinamik derlemedeki bir türü almak için çağrısı GetType döndürür null.

Dinamik modülde kullanmak GetType için AppDomain.AssemblyResolve olaya abone olun ve kaydetmeden önce çağrısı yapın GetType . Aksi takdirde, derlemenin iki kopyasını bellekte alırsınız.

Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından Get döndürülen temel sınıfın üyeleri gösterilmektedir.

Üye Türü Statik Statik Olmayan
Oluşturucu Hayır Hayır
Alan Hayır Evet. Bir alan her zaman "ada ve imzaya göre gizle" özelliğindedir.
Olay Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
Yöntem Hayır Evet. Bir yöntem (sanal ve sanal olmayan) "ada göre gizle" veya "ada ve imzaya göre gizle" özelliğinde olabilir.
İç İçe Tür Hayır Hayır
Özellik Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
  1. "Ada ve imzaya göre gizle" özelliği, imzanın tüm parçalarını (özel değiştiriciler, dönüş türleri, parametre türleri, başlangıç/bitiş simgeleri ve yönetilmeyen çağrı kuralları dahil) dikkate alır. Bu ikili bir karşılaştırmadır.

  2. Yansıma için, özellikler ve olaylar "ada ve imzaya göre gizle" özelliğindedir. Bu temel sınıfta hem alma hem de ayarlama erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir alma erişimcisi varsa, türetilen sınıf özelliği temel sınıf özelliğini gizler ve siz de temel sınıfta ayarlayıcıya erişemezsiniz.

  3. Özel öznitelikler ortak tür sisteminin parçası değildir.

Diziler veya COM türleri, kullanılabilir sınıfların tablosuna yüklenmedikleri sürece aranamaz.

typeName ad alanına göre nitelenmiş tür adı veya derleme adı belirtimi içeren bir derleme nitelikli adı olabilir. Bkz. AssemblyQualifiedName.

Ad alanını içeriyorsa ancak derleme adını içermiyorsa typeName , bu yöntem yalnızca çağıran nesnenin derlemesini ve mscorlib.dll/System.Private.CoreLib.dll bu sırada arar. typeName, kısmi veya tam derleme adıyla tam nitelenmişse, bu yöntem belirtilen derlemede arar. Derlemenin tanımlayıcı bir adı varsa, tam bir derleme adı gerekir.

AssemblyQualifiedName özelliği, iç içe türler, derleme adı ve genel tür bağımsız değişkenleri de dahil olmak üzere tam tür adı döndürür. Ortak dil çalışma zamanını destekleyen tüm derleyiciler iç içe geçmiş bir sınıf yerine basit adı yayar ve yansıma, sorgulandığında aşağıdaki kurallara uygun şekilde kodlanmış bir ad oluşturur.

Not

İşlemci mimarisi, derleme kimliğinin bir parçasıdır ve derleme adı dizelerinin bir parçası olarak belirtilebilir. Örneğin, "ProcessorArchitecture=msil". Ancak, uyumluluk nedeniyle özelliği tarafından döndürülen dizeye AssemblyQualifiedName dahil değildir. Ayrıca bir AssemblyName nesne oluşturup bunu yöntemin uygun bir aşırı yüklemesine Load geçirerek de türleri yükleyebilirsiniz. Daha sonra derlemeden türleri yüklemek için yöntemini kullanabilirsiniz Assembly.GetType . Ayrıca AssemblyName.ProcessorArchitecturebkz. .

Sınırlayıcı Anlamı
Ters Eğik Çizgi (\) Kaçış karakteri.
Ters köşe (') Genel bir türün adının sonunda bulunan tür parametrelerinin sayısını temsil eden bir veya daha fazla basamaktan önce.
Köşeli parantezler ([]) Bir genel tür bağımsız değişken listesi içine alın; bir tür bağımsız değişken listesi içinde, derlemeye uygun bir türün içine alın.
Virgül (,) Derleme adından önce gelir.
Nokta (.) Ad alanı tanımlayıcılarını belirtir.
Artı işareti (+) İç içe geçmiş bir sınıftan önce gelir.

Örneğin, bir sınıf için tam ad aşağıdaki gibi olabilir:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ad alanı TopNamespace.Sub+Namespace ise, dizenin iç içe ayırıcı olarak yorumlanmasını önlemek için artı işaretinden (+) önce bir kaçış karakteri (\) olması gerekir. Yansıma bu dizeyi aşağıdaki gibi yayar:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

"++" "\+\+" olur ve "\" ise "\\" olur.

Bu nitelenmiş ad kalıcı hale gelebilir ve daha sonra yüklemek Typeiçin kullanılabilir. araması yapmak ve yüklemek Typeiçin yalnızca tür adıyla veya derlemenin tam tür adıyla kullanın GetType . GetType tür adıyla yalnızca çağıranın derlemesinde ve ardından Sistem derlemesinde öğesini arar Type . GetType derlemenin tam tür adı ile herhangi bir derlemede öğesini Type arar.

Tür adlarının sonunda, türle ilgili ek bilgileri (türün bir başvuru türü, işaretçi türü veya dizi türü olduğu) belirten karakterler bulunabilir. Bu karakterler olmadan tür adını almak için t.GetElementType().ToString()kullanın; burada t türdür.

Boşluklar, derleme adı dışındaki tüm tür adı bileşenlerinde kullanılabilir. Derleme adında, ',' ayırıcısından önceki boşluklar kabul edilir, ancak ',' ayırıcısından sonraki boşluklar gözardı edilir.

Genel bir türün adı, arkasına genel tür bağımsız değişkenlerinin sayısını gösteren basamaklar (') ile biter. Bu ad düzenlemesinin amacı, derleyicilerin aynı ada sahip ancak aynı kapsamda farklı sayıda tür parametresi bulunan genel türleri desteklemesine izin vermektir. Örneğin, yansıma, genel yöntemlerden Tuple(Of T0, T1)Tuple(Of T) ve Tuple`2 Visual Basic'te veya Tuple<T> Visual C# içinde mangled adlarını Tuple`1 ve Tuple<T0, T1> döndürür.

Genel türler için tür bağımsız değişkeni listesi köşeli ayraç içine alınır ve tür bağımsız değişkenleri virgülle ayrılır. Örneğin, bir genelin Dictionary<TKey,TValue> iki tür parametresi vardır. MyType Türünde Dictionary<TKey,TValue> anahtarlar içeren bir değeri String aşağıdaki gibi gösterilebilir:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Tür bağımsız değişken listesinde derleme nitelikli bir tür belirtmek için, derlemeye uygun türü köşeli ayraç içine alın. Aksi takdirde, derleme nitelikli adının bölümlerini ayıran virgüller, ek tür bağımsız değişkenlerini sınırlandırma olarak yorumlanır. Örneğin, Dictionary<TKey,TValue>MyType anahtar türüne Stringsahip fromMyAssembly.dll aşağıdaki gibi belirtilebilir:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Not

Derlemeye uygun bir tür, yalnızca tür parametre listesinde göründüğünde köşeli ayraç içine eklenebilir. Tür parametre listelerindeki nitelenmiş ve nitelenmemiş türler için derlemeleri arama kuralları, nitelikli ve nitelenmemiş nongeneric türlerin kurallarıyla aynıdır.

Null atanabilir türler, genel türlerin özel bir örneğidir. Örneğin, null atanabilir Int32 değeri "System.Nullable'1[System.Int32]" dizesiyle gösterilir.

Not

C#, C++ ve Visual Basic'te, tür işleçlerini kullanarak null atanabilir türler de alabilirsiniz. Örneğin, null atanabilir Boolean tür tarafından C# dilinde, Nullable<Boolean>::typeid C++'da ve Visual Basic'te döndürülür typeof(Nullable<bool>)GetType(Nullable(Of Boolean)).

Aşağıdaki tabloda, çeşitli türler için kullandığınız GetType söz dizimi gösterilmektedir.

Almak için Kullanın
Boş değer atanabilir Int32 Type.GetType("System.Nullable`1[System.Int32]")
Yönetilmeyen işaretçi MyType Type.GetType("MyType*")
İşaretçinin yönetilmeyen işaretçisi MyType Type.GetType("MyType**")
Yönetilen işaretçi veya başvuru MyType Type.GetType("MyType&"). İşaretçilerden farklı olarak başvuruların bir düzeyle sınırlı olduğunu unutmayın.
Üst sınıf ve iç içe geçmiş sınıf Type.GetType("MyParentClass+MyNestedClass")
Alt sınırı 0 olan tek boyutlu bir dizi Type.GetType("MyType[]")
Alt sınırı bilinmeyen tek boyutlu bir dizi Type.GetType("MyType[*]")
N boyutlu bir dizi Köşeli ayraç içinde toplam n-1 kez virgül (,) olur. Örneğin, System.Object[,,] üç boyutlu Object bir diziyi temsil eder.
Tek boyutlu dizilerden oluşan bir dizi Type.GetType("MyType[][]")
Bilinmeyen alt sınırları olan dikdörtgen iki boyutlu bir dizi Type.GetType("MyType[,]")
Tek tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`1[MyType]")
İki tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`2[MyType,AnotherType]")
İki derleme nitelikli tür bağımsız değişkenine sahip genel bir tür Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Derleme nitelikli tür bağımsız değişkenine sahip derleme nitelikli genel tür Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tür bağımsız değişkeni iki tür bağımsız değişkeni olan genel bir tür olan genel bir tür Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Ayrıca bkz.

Şunlara uygulanır

GetType(String, Boolean)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Type Belirtilen ada sahip olan öğesini alır, büyük/küçük harfe duyarlı bir arama gerçekleştirir ve tür bulunamazsa özel durum oluşturup oluşturmayacağını belirtir.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
public static Type? GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Parametreler

typeName
String

Alınacak türün derleme nitelikli adı. Bkz. AssemblyQualifiedName. Tür şu anda yürütülen derlemede veya mscorlib.dll/System.Private.CoreLib.dll ise, ad alanı tarafından nitelenmiş tür adını sağlamak yeterlidir.

throwOnError
Boolean

true türü bulunamazsa bir özel durum oluşturur; false öğesini döndürmek nulliçin . Belirtme, false diğer bazı özel durum koşullarını da bastırır, ancak bunların tümünü engellemez. Özel Durumlar bölümüne bakın.

Döndürülenler

Belirtilen ada sahip tür. Tür bulunamazsa, throwOnError parametresi döndürülür veya null bir özel durum oluşturulur belirtir. Bazı durumlarda, değerinden throwOnErrorbağımsız olarak bir özel durum oluşturulur. Özel Durumlar bölümüne bakın.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

throwOnError ve true türü bulunamadı.

-veya-

throwOnError typeName ve true ekli sekme gibi geçersiz karakterler içeriyor.

-veya-

throwOnError ve truetypeName boş bir dizedir.

-veya-

throwOnError , true ve typeName geçersiz boyuta sahip bir dizi türünü temsil eder.

-veya-

typeName bir dizisini TypedReferencetemsil eder.

throwOnError typeName ve true geçersiz söz dizimi içeriyor. Örneğin, "MyType[,*,]".

-veya-

typeName, işaretçi türü, tür veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

throwOnError ve true derleme veya bağımlılıklarından biri bulunamadı.

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine temel sınıf özel durumunu IOExceptionyakalayın.

Derleme veya bağımlılıklarından biri şu anda yüklü olan çalışma zamanı için geçerli değil.

Örnekler

Aşağıdaki örnek, türünü System.Int32 alır ve özelliğini System.Int32görüntülemek FullName için bu tür nesnesini kullanır. Tür nesnesi var olmayan bir derlemeye başvuruyorsa, bu örnek bir özel durum oluşturur.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
open System

try
    // Get the type of a specified class.
    let myType1 = Type.GetType "System.Int32"
    printfn $"The full name is {myType1.FullName}.\n"
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type System.Int32"

try
    // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
    let myType2 = Type.GetType("NoneSuch", true)
    printfn $"The full name is {myType2.FullName}."
with :? TypeLoadException as e ->
    printfn $"{e.GetType().Name}: Unable to load type NoneSuch"
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Açıklamalar

derleme nitelikli adını AssemblyQualifiedNamebiliyorsanız, başka bir Type derlemedeki bir türün nesnesini almak için yöntemini kullanabilirsinizGetType. GetType içinde belirtilen derlemenin yüklenmesine typeNameneden olur. Ayrıca yöntemini kullanarak Assembly.Load bir derleme yükleyebilir ve nesneleri almak Type için veya Assembly.GetTypes yöntemini kullanabilirsinizAssembly.GetType. Bir tür derleme zamanında programınız tarafından bilinen bir derlemedeyse, C# dilinde veya GetType Visual Basic'teki işleçte kullanmak typeof daha verimlidir.

GetType yalnızca diskten yüklenen derlemelerde çalışır. Hizmetleri kullanarak System.Reflection.Emit tanımlanan dinamik derlemede tanımlanan bir türü aramak için çağırırsanız GetType tutarsız davranışlar alabilirsiniz. Davranış, dinamik derlemenin kalıcı olup olmadığına, yani numaralandırmanın RunAndSave veya Save erişim modları System.Reflection.Emit.AssemblyBuilderAccess kullanılarak oluşturulup oluşturulmadığına bağlıdır. Dinamik derleme kalıcıysa ve çağrılmadan önce GetType diske yazıldıysa, yükleyici diskte kayıtlı derlemeyi bulur, bu derlemeyi yükler ve türü bu derlemeden alır. Çağrıldığında derleme diske kaydedilmemişse GetType , yöntemi döndürür null. GetType geçici dinamik derlemeleri anlamaz; bu nedenle, geçici dinamik derlemedeki bir türü almak için çağrısı GetType döndürür null.

Dinamik modülde kullanmak GetType için AppDomain.AssemblyResolve olaya abone olun ve kaydetmeden önce çağrısı GetType yapın. Aksi takdirde, derlemenin bellekte iki kopyasını alırsınız.

throwOnError parametresi, tür bulunamadığında ne olacağını belirtir ve ayrıca Özel Durumlar bölümünde açıklandığı gibi diğer bazı özel durum koşullarını bastırır. Değeri throwOnErrorne olursa olsun bazı özel durumlar oluşturulur. Örneğin, tür bulunur ancak yüklenemezse, olsa throwOnErrorfalsebile bir TypeLoadException oluşturulur.

Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından döndürülen temel sınıfın Get üyeleri gösterilmektedir.

Üye Türü Statik Statik Olmayan
Oluşturucu Hayır Hayır
Alan Hayır Evet. Bir alan her zaman "ada ve imzaya göre gizle" özelliğindedir.
Olay Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
Yöntem Hayır Evet. Bir yöntem (sanal ve sanal olmayan) "ada göre gizle" veya "ada ve imzaya göre gizle" özelliğinde olabilir.
İç İçe Tür Hayır Hayır
Özellik Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
  1. "Ada ve imzaya göre gizle" özelliği, imzanın tüm parçalarını (özel değiştiriciler, dönüş türleri, parametre türleri, başlangıç/bitiş simgeleri ve yönetilmeyen çağrı kuralları dahil) dikkate alır. Bu ikili bir karşılaştırmadır.

  2. Yansıma için, özellikler ve olaylar "ada ve imzaya göre gizle" özelliğindedir. Bu temel sınıfta hem alma hem de ayarlama erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir alma erişimcisi varsa, türetilen sınıf özelliği temel sınıf özelliğini gizler ve siz de temel sınıfta ayarlayıcıya erişemezsiniz.

  3. Özel öznitelikler ortak tür sisteminin parçası değildir.

Diziler veya COM türleri, kullanılabilir sınıflar tablosuna önceden yüklenmedikleri sürece aranmıyor.

typeName , ad alanı tarafından nitelenmiş tür adı veya derleme adı belirtimi içeren bir derleme nitelikli adı olabilir. Bkz. AssemblyQualifiedName.

Ad alanını içeriyorsa ancak derleme adını içermiyorsa typeName , bu yöntem yalnızca çağıran nesnenin derlemesini arar ve /System.Private.CoreLib.dll mscorlib.dll. typeName, kısmi veya tam derleme adıyla tam olarak nitelenmişse, bu yöntem belirtilen derlemede arar. Derlemenin tanımlayıcı bir adı varsa, tam bir derleme adı gerekir.

AssemblyQualifiedName özelliği iç içe türler, derleme adı ve genel bağımsız değişkenler de dahil olmak üzere tam tür adını döndürür. Ortak dil çalışma zamanını destekleyen tüm derleyiciler iç içe geçmiş bir sınıf yerine basit adı yayar ve yansıma, sorgulandığında aşağıdaki kurallara uygun şekilde kodlanmış bir ad oluşturur.

Not

İşlemci mimarisi, derleme kimliğinin bir parçasıdır ve derleme adı dizelerinin bir parçası olarak belirtilebilir. Örneğin, "ProcessorArchitecture=msil". Ancak, uyumluluk nedeniyle özelliği tarafından döndürülen dizeye AssemblyQualifiedName dahil değildir. Ayrıca, bir AssemblyName nesne oluşturup bunu yöntemin uygun bir aşırı yüklemesine Load geçirerek de türleri yükleyebilirsiniz. Ardından derlemeden türleri yüklemek için yöntemini kullanabilirsiniz Assembly.GetType . Ayrıca AssemblyName.ProcessorArchitecturebkz. .

Sınırlayıcı Anlamı
Ters Eğik Çizgi (\) Kaçış karakteri.
Ters köşe (') Genel bir türün adının sonunda bulunan tür parametrelerinin sayısını temsil eden bir veya daha fazla basamaktan önce.
Köşeli parantezler ([]) Genel tür bağımsız değişken listesini, bir genel tür için kapalı olarak ayarlayın; bir tür bağımsız değişken listesi içinde, derleme nitelikli bir türü içine alın.
Virgül (,) Derleme adından önce gelir.
Nokta (.) Ad alanı tanımlayıcılarını belirtir.
Artı işareti (+) İç içe geçmiş bir sınıftan önce gelir.

Örneğin, bir sınıf için tam ad aşağıdaki gibi olabilir:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ad alanı TopNamespace.Sub+Namespace ise, dizenin iç içe ayırıcı olarak yorumlanmasını önlemek için artı işaretinden (+) önce bir kaçış karakteri (\) olması gerekir. Yansıma bu dizeyi aşağıdaki gibi yayar:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

"++" "\+\+" olur ve "\" "\\" olur.

Bu nitelenmiş ad kalıcı hale gelebilir ve daha sonra yüklemek Typeiçin kullanılabilir. araması yapmak ve yüklemek Typeiçin yalnızca tür adıyla veya derlemenin tam tür adıyla kullanın GetType . GetType tür adıyla yalnızca çağıranın derlemesinde ve ardından Sistem derlemesinde öğesini arar Type . GetType derleme nitelikli tür adı ile herhangi bir derlemede öğesini Type arar.

Tür adlarının sonunda, türle ilgili ek bilgileri (türün bir başvuru türü, işaretçi türü veya dizi türü olduğu) belirten karakterler bulunabilir. Bu karakterler olmadan tür adını almak için t.GetElementType().ToString()kullanın; burada t türdür.

Boşluklar, derleme adı dışındaki tüm tür adı bileşenlerinde kullanılabilir. Derleme adında, ',' ayırıcısından önceki boşluklar kabul edilir, ancak ',' ayırıcısından sonraki boşluklar gözardı edilir.

Genel bir türün adı bir ters köşe (') ile biter ve ardından genel tür bağımsız değişkenlerinin sayısını temsil eden basamaklar eklenir. Bu ad düzenlemesinin amacı, derleyicilerin aynı ada sahip ancak aynı kapsamda farklı sayıda tür parametresi bulunan genel türleri desteklemesine izin vermektir. Örneğin, yansıma, genel yöntemlerden ve Visual Basic'te veya Tuple<T> Visual C# içinde mangled adlarını Tuple`1 döndürürTuple<T0, T1>.Tuple`2Tuple(Of T)Tuple(Of T0, T1)

Genel türler için, tür bağımsız değişkeni listesi köşeli ayraç içine alınır ve tür bağımsız değişkenleri virgülle ayrılır. Örneğin, bir genel Dictionary<TKey,TValue> iki tür parametreye sahiptir. Dictionary<TKey,TValue> MyType Anahtar türüne String sahip bir değeri aşağıdaki gibi gösterilebilir:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Tür bağımsız değişken listesinde derleme nitelikli bir tür belirtmek için, derleme nitelikli türü köşeli ayraç içine alın. Aksi takdirde, derleme nitelikli adının bölümlerini ayıran virgüller, ek tür bağımsız değişkenlerini sınırlandırma olarak yorumlanır. Örneğin, türündeki anahtarlara Stringsahip MyAssembly.dll'den biri Dictionary<TKey,TValue>MyType aşağıdaki gibi belirtilebilir:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Not

Derleme nitelikli bir tür, yalnızca tür parametre listesinde göründüğünde köşeli ayraç içine eklenebilir. Tür parametre listelerindeki nitelenmiş ve nitelenmemiş türler için derlemeleri arama kuralları, nitelenmiş ve nitelenmemiş türlerdeki kurallarla aynıdır.

Null atanabilir türler, genel türlerin özel bir örneğidir. Örneğin, null atanabilir Int32 değeri "System.Nullable'1[System.Int32]" dizesiyle temsil edilir.

Not

C#, C++ ve Visual Basic'te tür işleçlerini kullanarak null atanabilir türler de alabilirsiniz. Örneğin, null atanabilir Boolean tür tarafından C# dilinde, Nullable<Boolean>::typeid C++ dilinde ve Visual Basic'te döndürülür GetType(Nullable(Of Boolean))typeof(Nullable<bool>).

Aşağıdaki tabloda, çeşitli türler için kullandığınız GetType söz dizimi gösterilmektedir.

Almak için Kullanın
Boş değer atanabilir Int32 Type.GetType("System.Nullable`1[System.Int32]")
Yönetilmeyen işaretçi MyType Type.GetType("MyType*")
İşaretçinin yönetilmeyen işaretçisi MyType Type.GetType("MyType**")
Yönetilen işaretçi veya başvuru MyType Type.GetType("MyType&"). İşaretçilerden farklı olarak başvuruların bir düzeyle sınırlı olduğunu unutmayın.
Üst sınıf ve iç içe geçmiş sınıf Type.GetType("MyParentClass+MyNestedClass")
Alt sınırı 0 olan tek boyutlu bir dizi Type.GetType("MyArray[]")
Alt sınırı bilinmeyen tek boyutlu bir dizi Type.GetType("MyArray[*]")
N boyutlu bir dizi Köşeli ayraç içinde toplam n-1 kez virgül (,) olur. Örneğin, System.Object[,,] üç boyutlu Object bir diziyi temsil eder.
İki boyutlu bir dizinin dizisi Type.GetType("MyArray[][]")
Bilinmeyen alt sınırları olan dikdörtgen iki boyutlu bir dizi Type.GetType("MyArray[,]")
Tek tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`1[MyType]")
İki tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`2[MyType,AnotherType]")
İki derleme nitelikli tür bağımsız değişkenine sahip genel bir tür Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Derleme nitelikli tür bağımsız değişkenine sahip derleme nitelikli genel tür Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tür bağımsız değişkeni iki tür bağımsız değişkeni olan genel bir tür olan genel bir tür Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Ayrıca bkz.

Şunlara uygulanır

GetType(String, Boolean, Boolean)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Type Türü bulunamazsa özel durum oluşturup oluşturmayacağını ve büyük/küçük harfe duyarlı arama yapılıp yapılmayacağını belirterek belirtilen ada sahip öğesini alır.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
public static Type? GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Parametreler

typeName
String

Alınacak türün derleme nitelikli adı. Bkz. AssemblyQualifiedName. Tür şu anda yürütülen derlemede veya mscorlib.dll/System.Private.CoreLib.dll içindeyse, ad alanı tarafından nitelenmiş tür adını sağlamak yeterlidir.

throwOnError
Boolean

true türü bulunamazsa özel durum oluşturma; false öğesini döndürecek null. Belirtme, false diğer bazı özel durum koşullarını da gizler, ancak bunların tümünü gizlemez. Özel Durumlar bölümüne bakın.

ignoreCase
Boolean

trueiçin büyük/küçük harfe duyarlı olmayan bir arama yapmak üzere typeNamefalse için büyük/küçük harfe duyarlı bir arama yapmak içintypeName.

Döndürülenler

Belirtilen ada sahip tür. Tür bulunamazsa, throwOnError parametresi döndürülür veya null bir özel durum oluşturulur belirtir. Bazı durumlarda, değerinden throwOnErrorbağımsız olarak bir özel durum oluşturulur. Özel Durumlar bölümüne bakın.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

throwOnError ve true türü bulunamadı.

-veya-

throwOnError typeName ve true ekli sekme gibi geçersiz karakterler içeriyor.

-veya-

throwOnError ve truetypeName boş bir dizedir.

-veya-

throwOnError , true ve typeName geçersiz boyuta sahip bir dizi türünü temsil eder.

-veya-

typeName bir dizisini TypedReferencetemsil eder.

throwOnError typeName ve true geçersiz söz dizimi içeriyor. Örneğin, "MyType[,*,]".

-veya-

typeName, işaretçi türü, tür veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

throwOnError ve true derleme veya bağımlılıklarından biri bulunamadı.

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

Derleme şu anda yüklü olan çalışma zamanı için geçerli değil.

Açıklamalar

başka bir derlemedeki bir Type tür için nesnesi almak için yöntemini kullanabilirsinizGetType. Derlemenin nitelenmiş adını biliyorsanız, bu nesne öğesinden AssemblyQualifiedNameelde edilebilir. GetType içinde belirtilen derlemenin yüklenmesine typeNameneden olur. Ayrıca yöntemini kullanarak Assembly.Load bir derleme yükleyebilir ve nesneleri almak Type için veya Assembly.GetTypes yöntemini kullanabilirsinizAssembly.GetType. Bir tür derleme zamanında programınız tarafından bilinen bir derlemedeyse, C# dilinde veya GetType Visual Basic'teki işleçte kullanmak typeof daha verimlidir.

GetType yalnızca diskten yüklenen derlemelerde çalışır. Hizmetleri kullanarak System.Reflection.Emit tanımlanan dinamik derlemede tanımlanan bir türü aramak için çağırırsanız GetType tutarsız davranışlar yaşayabilirsiniz. Davranış, dinamik derlemenin kalıcı olup olmamasına, yani numaralandırmanın RunAndSave veya Save erişim modları kullanılarak oluşturulup oluşturulmadığına System.Reflection.Emit.AssemblyBuilderAccess bağlıdır. Dinamik derleme kalıcıysa ve çağrılmadan önce GetType diske yazılmışsa, yükleyici kaydedilen derlemeyi diskte bulur, bu derlemeyi yükler ve türü bu derlemeden alır. Çağrıldığında GetType derleme diske kaydedilmemişse yöntemi döndürür null. GetType geçici dinamik derlemeleri anlamaz; bu nedenle, geçici dinamik derlemedeki bir türü almak için çağrısı GetType döndürür null.

Dinamik modülde kullanmak GetType için AppDomain.AssemblyResolve olaya abone olun ve kaydetmeden önce çağrısı yapın GetType . Aksi takdirde, derlemenin iki kopyasını bellekte alırsınız.

throwOnError parametresi, tür bulunamadığında ne olacağını belirtir ve Özel Durumlar bölümünde açıklandığı gibi diğer bazı özel durum koşullarını gizler. değerinden throwOnErrorbağımsız olarak bazı özel durumlar oluşturulur. Örneğin, tür bulunur ancak yüklenemezse, olsa throwOnErrorfalsebile bir TypeLoadException oluşturulur.

Aşağıdaki tabloda, bir türe yansıtılırken yöntemler tarafından Get döndürülen temel sınıfın üyeleri gösterilmektedir.

Üye Türü Statik Statik Olmayan
Oluşturucu Hayır Hayır
Alan Hayır Evet. Bir alan her zaman "ada ve imzaya göre gizle" özelliğindedir.
Olay Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
Yöntem Hayır Evet. Bir yöntem (sanal ve sanal olmayan) "ada göre gizle" veya "ada ve imzaya göre gizle" özelliğinde olabilir.
İç İçe Tür Hayır Hayır
Özellik Uygulanamaz Ortak tür sistemi kuralı, devralma işleminin özelliği uygulayan yöntemlerinkiyle aynı olmasıdır. Yansıma, özellikleri "ada ve imzaya göre gizle" şeklinde kullanır. Aşağıdaki 2. nota bakın.
  1. "Ada ve imzaya göre gizle" özelliği, imzanın tüm parçalarını (özel değiştiriciler, dönüş türleri, parametre türleri, başlangıç/bitiş simgeleri ve yönetilmeyen çağrı kuralları dahil) dikkate alır. Bu ikili bir karşılaştırmadır.

  2. Yansıma için, özellikler ve olaylar "ada ve imzaya göre gizle" özelliğindedir. Bu temel sınıfta hem alma hem de ayarlama erişimcisine sahip bir özelliğiniz varsa, ancak türetilen sınıfın yalnızca bir alma erişimcisi varsa, türetilen sınıf özelliği temel sınıf özelliğini gizler ve siz de temel sınıfta ayarlayıcıya erişemezsiniz.

  3. Özel öznitelikler ortak tür sisteminin parçası değildir.

Diziler veya COM türleri, kullanılabilir sınıfların tablosuna yüklenmedikleri sürece aranamaz.

typeName ad alanına göre nitelenmiş tür adı veya derleme adı belirtimi içeren bir derleme nitelikli adı olabilir. Bkz. AssemblyQualifiedName.

Ad alanını içeriyorsa ancak derleme adını içermiyorsa typeName , bu yöntem yalnızca çağıran nesnenin derlemesini ve mscorlib.dll/System.Private.CoreLib.dll bu sırada arar. typeName, kısmi veya tam derleme adıyla tam nitelenmişse, bu yöntem belirtilen derlemede arar. Derlemenin tanımlayıcı bir adı varsa, tam bir derleme adı gerekir.

AssemblyQualifiedName özelliği iç içe türler, derleme adı ve tür bağımsız değişkenleri de dahil olmak üzere tam tür adı döndürür. Ortak dil çalışma zamanını destekleyen tüm derleyiciler iç içe geçmiş bir sınıf yerine basit adı yayar ve yansıma, sorgulandığında aşağıdaki kurallara uygun şekilde kodlanmış bir ad oluşturur.

Not

İşlemci mimarisi, derleme kimliğinin bir parçasıdır ve derleme adı dizelerinin bir parçası olarak belirtilebilir. Örneğin, "ProcessorArchitecture=msil". Ancak, uyumluluk nedeniyle özelliği tarafından döndürülen dizeye AssemblyQualifiedName dahil değildir. Ayrıca bir AssemblyName nesne oluşturup bunu yöntemin uygun bir aşırı yüklemesine Load geçirerek de türleri yükleyebilirsiniz. Daha sonra derlemeden türleri yüklemek için yöntemini kullanabilirsiniz Assembly.GetType . Ayrıca AssemblyName.ProcessorArchitecturebkz. .

Sınırlayıcı Anlamı
Ters Eğik Çizgi (\) Kaçış karakteri.
Ters köşe (') Genel bir türün adının sonunda bulunan tür parametrelerinin sayısını temsil eden bir veya daha fazla basamaktan önce.
Köşeli parantezler ([]) Bir genel tür bağımsız değişken listesi içine alın; bir tür bağımsız değişken listesi içinde, derlemeye uygun bir türün içine alın.
Virgül (,) Derleme adından önce gelir.
Nokta (.) Ad alanı tanımlayıcılarını belirtir.
Artı işareti (+) İç içe geçmiş bir sınıftan önce gelir.

Örneğin, bir sınıf için tam ad aşağıdaki gibi olabilir:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Ad alanı TopNamespace.Sub+Namespace ise, dizenin iç içe ayırıcı olarak yorumlanmasını önlemek için artı işaretinden (+) önce bir kaçış karakteri (\) olması gerekir. Yansıma bu dizeyi aşağıdaki gibi yayar:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

"++" "\+\+" olur ve "\" ise "\\" olur.

Bu nitelenmiş ad kalıcı hale gelebilir ve daha sonra yüklemek Typeiçin kullanılabilir. araması yapmak ve yüklemek Typeiçin yalnızca tür adıyla veya derlemenin tam tür adıyla kullanın GetType . GetType tür adıyla yalnızca çağıranın derlemesinde ve ardından Sistem derlemesinde öğesini arar Type . GetType derlemenin tam tür adı ile herhangi bir derlemede öğesini Type arar.

Tür adlarının sonunda, türle ilgili ek bilgileri (türün bir başvuru türü, işaretçi türü veya dizi türü olduğu) belirten karakterler bulunabilir. Bu karakterler olmadan tür adını almak için t.GetElementType().ToString()kullanın; burada t türdür.

Boşluklar, derleme adı dışındaki tüm tür adı bileşenlerinde kullanılabilir. Derleme adında, ',' ayırıcısından önceki boşluklar kabul edilir, ancak ',' ayırıcısından sonraki boşluklar gözardı edilir.

Genel bir türün adı bir ters köşe (') ile biter ve ardından genel tür bağımsız değişkenlerinin sayısını temsil eden basamaklar eklenir. Bu ad düzenlemesinin amacı, derleyicilerin aynı ada sahip ancak aynı kapsamda farklı sayıda tür parametresi bulunan genel türleri desteklemesine izin vermektir. Örneğin, yansıma, genel yöntemlerden ve Visual Basic'te veya Tuple<T> Visual C# içinde mangled adlarını Tuple`1 döndürürTuple<T0, T1>.Tuple`2Tuple(Of T)Tuple(Of T0, T1)

Genel türler için, tür bağımsız değişkeni listesi köşeli ayraç içine alınır ve tür bağımsız değişkenleri virgülle ayrılır. Örneğin, bir genel Dictionary<TKey,TValue> iki tür parametreye sahiptir. Dictionary<TKey,TValue> MyType Anahtar türüne String sahip bir değeri aşağıdaki gibi gösterilebilir:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Tür bağımsız değişken listesinde derleme nitelikli bir tür belirtmek için, derleme nitelikli türü köşeli ayraç içine alın. Aksi takdirde, derleme nitelikli adının bölümlerini ayıran virgüller, ek tür bağımsız değişkenlerini sınırlandırma olarak yorumlanır. Örneğin, türündeki anahtarlara Stringsahip MyAssembly.dll'den biri Dictionary<TKey,TValue>MyType aşağıdaki gibi belirtilebilir:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")

Not

Derleme nitelikli bir tür, yalnızca tür parametre listesinde göründüğünde köşeli ayraç içine eklenebilir. Tür parametre listelerindeki nitelenmiş ve nitelenmemiş türler için derlemeleri arama kuralları, nitelenmiş ve nitelenmemiş türlerdeki kurallarla aynıdır.

Null atanabilir türler, genel türlerin özel bir örneğidir. Örneğin, null atanabilir Int32 değeri "System.Nullable'1[System.Int32]" dizesiyle temsil edilir.

Not

C#, C++ ve Visual Basic'te tür işleçlerini kullanarak null atanabilir türler de alabilirsiniz. Örneğin, null atanabilir Boolean tür tarafından C# dilinde, Nullable<Boolean>::typeid C++ dilinde ve Visual Basic'te döndürülür GetType(Nullable(Of Boolean))typeof(Nullable<bool>).

Aşağıdaki tabloda, çeşitli türler için kullandığınız GetType söz dizimi gösterilmektedir.

Almak için Kullanın
Boş değer atanabilir Int32 Type.GetType("System.Nullable`1[System.Int32]")
Yönetilmeyen işaretçi MyType Type.GetType("MyType*")
İşaretçinin yönetilmeyen işaretçisi MyType Type.GetType("MyType**")
Yönetilen işaretçi veya başvuru MyType Type.GetType("MyType&"). İşaretçilerden farklı olarak başvuruların bir düzeyle sınırlı olduğunu unutmayın.
Üst sınıf ve iç içe geçmiş sınıf Type.GetType("MyParentClass+MyNestedClass")
Alt sınırı 0 olan tek boyutlu bir dizi Type.GetType("MyArray[]")
Alt sınırı bilinmeyen tek boyutlu bir dizi Type.GetType("MyArray[*]")
N boyutlu bir dizi Köşeli ayraç içinde toplam n-1 kez virgül (,) olur. Örneğin, System.Object[,,] üç boyutlu Object bir diziyi temsil eder.
İki boyutlu bir dizinin dizisi Type.GetType("MyArray[][]")
Bilinmeyen alt sınırları olan dikdörtgen iki boyutlu bir dizi Type.GetType("MyArray[,]")
Tek tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`1[MyType]")
İki tür bağımsız değişkeni olan genel bir tür Type.GetType("MyGenericType`2[MyType,AnotherType]")
İki derleme nitelikli tür bağımsız değişkenine sahip genel bir tür Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Derleme nitelikli tür bağımsız değişkenine sahip derleme nitelikli genel tür Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Tür bağımsız değişkeni iki tür bağımsız değişkeni olan genel bir tür olan genel bir tür Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Ayrıca bkz.

Şunlara uygulanır

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Belirtilen ada sahip türü alır ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

Parametreler

typeName
String

Alınacak türün adı. typeResolver Parametresi sağlanırsa, tür adı çözümlenebilen herhangi bir dize typeResolver olabilir. assemblyResolver Parametre sağlanmışsa veya standart tür çözümlemesi kullanılıyorsa, typeName türün yürütülmekte olan derlemede veya mscorlib.dll/System.Private.CoreLib.dll olmadığı sürece, derlemenin uygun adı olmalıdır (bkzAssemblyQualifiedName. ), bu durumda ad alanı tarafından nitelenen tür adını sağlamak yeterlidir.

assemblyResolver
Func<AssemblyName,Assembly>

içinde typeNamebelirtilen derlemeyi bulup döndüren bir yöntem. Derleme adı nesnesi AssemblyName olarak öğesine assemblyResolver geçirilir. Bir derlemenin adını içermiyorsa typeName çağrılmıyor assemblyResolver . assemblyResolver Sağlanmazsa standart montaj çözünürlüğü gerçekleştirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanların yöntemlerini geçirmeyin. Bunun yapılması kötü amaçlı kod için ayrıcalıkların yükseltilmesine neden olabilir. Yalnızca sağladığınız veya bildiğiniz yöntemleri kullanın.

typeResolver
Func<Assembly,String,Boolean,Type>

tarafından veya standart derleme çözümlemesi tarafından döndürülen assemblyResolver derlemeden tarafından typeName belirtilen türü bulup döndüren bir yöntem. Hiçbir derleme sağlanmazsa typeResolver , yöntemi bir tane sağlayabilir. yöntemi ayrıca büyük/küçük harfe duyarlı olmayan bir arama yapılıp yapılmayacağını belirten bir parametre alır; false bu parametreye geçirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanların yöntemlerini geçirmeyin.

Döndürülenler

Belirtilen ada sahip tür veya null tür bulunamaz.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

Bir tür adına ve derleme adına ayrıştırıldığında typeName hata oluşur (örneğin, basit tür adı boş bir özel karakter içerdiğinde).

-veya-

typeName, işaretçi türü, tür veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

typeNamegeçersiz bir türü temsil eder, örneğin dizisi.TypedReference

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

-veya-

typeName geçersiz bir derleme adı içeriyor.

-veya-

typeName tür adı olmayan geçerli bir derleme adıdır.

Derleme veya bağımlılıklarından biri şu anda yüklü olan çalışma zamanı için geçerli değil.

Açıklamalar

Bu yöntem için kullanım senaryoları ve ve typeResolver parametreleriyle ilgili assemblyResolver ayrıntılar yöntem aşırı yüklemesinde GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) bulunabilir.

Not

Bulunamazsa typeName , yöntemine yapılan GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) çağrı döndürür null. Özel durum oluşturmaz. Özel durumun oluşturup oluşturmadığını denetlemek için parametresi olan throwOnError yöntemin GetType aşırı yüklemesini çağırın.

Bu yöntem aşırı yüklemesini çağırmak, yöntem aşırı yüklemesini GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) çağırmak ve ve ignoreCase parametreleri için belirtmekle falsethrowOnError aynıdır.

Şunlara uygulanır

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs
Kaynak:
Type.CoreCLR.cs

Belirtilen ada sahip türü alır, tür bulunamazsa özel durum oluşturup oluşturmayacağını belirtir ve isteğe bağlı olarak derlemeyi ve türü çözümlemek için özel yöntemler sağlar.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type? GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly?>? assemblyResolver, Func<System.Reflection.Assembly?,string,bool,Type?>? typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

Parametreler

typeName
String

Alınacak türün adı. typeResolver Parametresi sağlanırsa, tür adı çözümlenebilen herhangi bir dize typeResolver olabilir. assemblyResolver Parametre sağlanmışsa veya standart tür çözümlemesi kullanılıyorsa, typeName türün yürütülmekte olan derlemede veya mscorlib.dll/System.Private.CoreLib.dll olmadığı sürece, derlemenin uygun adı olmalıdır (bkzAssemblyQualifiedName. ), bu durumda ad alanı tarafından nitelenen tür adını sağlamak yeterlidir.

assemblyResolver
Func<AssemblyName,Assembly>

içinde typeNamebelirtilen derlemeyi bulup döndüren bir yöntem. Derleme adı nesnesi AssemblyName olarak öğesine assemblyResolver geçirilir. Bir derlemenin adını içermiyorsa typeName çağrılmıyor assemblyResolver . assemblyResolver Sağlanmazsa standart montaj çözünürlüğü gerçekleştirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanların yöntemlerini geçirmeyin. Bunun yapılması kötü amaçlı kod için ayrıcalıkların yükseltilmesine neden olabilir. Yalnızca sağladığınız veya bildiğiniz yöntemleri kullanın.

typeResolver
Func<Assembly,String,Boolean,Type>

tarafından veya standart derleme çözümlemesi tarafından döndürülen assemblyResolver derlemeden tarafından typeName belirtilen türü bulup döndüren bir yöntem. Hiçbir derleme sağlanmazsa, yöntemi bir tane sağlayabilir. yöntemi ayrıca büyük/küçük harfe duyarlı olmayan bir arama yapılıp yapılmayacağını belirten bir parametre alır; false bu parametreye geçirilir.

Dikkat: Bilinmeyen veya güvenilmeyen arayanların yöntemlerini geçirmeyin.

throwOnError
Boolean

true türü bulunamazsa bir özel durum oluşturur; false öğesini döndürmek nulliçin . Belirtme, false diğer bazı özel durum koşullarını da bastırır, ancak bunların tümünü engellemez. Özel Durumlar bölümüne bakın.

Döndürülenler

Belirtilen ada sahip tür. Tür bulunamazsa, throwOnError parametresi döndürülür veya null bir özel durum oluşturulur belirtir. Bazı durumlarda, değerinden throwOnErrorbağımsız olarak bir özel durum oluşturulur. Özel Durumlar bölümüne bakın.

Özel durumlar

typeName, null değeridir.

Sınıf başlatıcısı çağrılır ve bir özel durum oluşturulur.

throwOnError ve true türü bulunamadı.

-veya-

throwOnError typeName ve true ekli sekme gibi geçersiz karakterler içeriyor.

-veya-

throwOnError ve truetypeName boş bir dizedir.

-veya-

throwOnError , true ve typeName geçersiz boyuta sahip bir dizi türünü temsil eder.

-veya-

typeName bir dizisini TypedReferencetemsil eder.

Bir tür adına ve derleme adına ayrıştırıldığında typeName hata oluşur (örneğin, basit tür adı boş bir özel karakter içerdiğinde).

-veya-

throwOnError typeName ve true geçersiz söz dizimi içeriyor (örneğin, "MyType[,*,]").

-veya-

typeName, işaretçi türü, tür veya Void tür bağımsız değişkenlerinden biri olan genel bir ByRef türü temsil eder.

-veya-

typeName , yanlış sayıda tür bağımsız değişkeni olan genel bir türü temsil eder.

-veya-

typeName genel bir türü temsil eder ve tür bağımsız değişkenlerinden biri ilgili tür parametresinin kısıtlamalarını karşılamaz.

throwOnError ve true derleme veya bağımlılıklarından biri bulunamadı.

-veya-

typeName geçersiz bir derleme adı içeriyor.

-veya-

typeName tür adı olmayan geçerli bir derleme adıdır.

Derleme ya da bağımlılıklarından biri bulundu, ancak yüklenemedi.

Derleme veya bağımlılıklarından biri şu anda yüklü olan çalışma zamanı için geçerli değil.

Açıklamalar

Bu yöntem için kullanım senaryoları ve ve typeResolver parametreleriyle ilgili assemblyResolver ayrıntılar yöntem aşırı yüklemesinde GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) bulunabilir.

Bu yöntem aşırı yüklemesini çağırmak, yöntem aşırı yüklemesini GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) çağırmak ve parametresini belirtmekle falseignoreCase aynıdır.

Şunlara uygulanır