Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Farklı yansıma işlemleri için geçerli bir girişe sahip olmak üzere tür adlarını belirtmeniz gerekir. Tam nitelikli tür adı, bir derleme adı belirtimi, bir ad alanı belirtimi ve bir tür adından oluşur. Tür adı belirtimleri, Type.GetType, Module.GetType, ModuleBuilder.GetType ve Assembly.GetType gibi yöntemler tarafından kullanılır.
Tür adları için dil bilgisi
Dil bilgisi, resmi dillerin söz dizimini tanımlar. Aşağıdaki tabloda geçerli bir girişin nasıl tanındığını açıklayan sözcük kuralları listelanmaktadır. Terminaller (daha da azaltılabilir olmayan öğeler) tüm büyük harflerle gösterilir. Terminal olmayanlar (daha da azaltılabilir öğeler) büyük-küçük harf karışımı veya tek tırnak içerisinde gösterilir, ancak tek tırnak işareti (') söz diziminin bir parçasını oluşturmaz. Boru karakteri (|), alt kuralları olan kuralları belirtir.
TypeSpec
: ReferenceTypeSpec
| SimpleTypeSpec
;
ReferenceTypeSpec
: SimpleTypeSpec '&'
;
SimpleTypeSpec
: PointerTypeSpec
| GenericTypeSpec
| TypeName
;
GenericTypeSpec
: SimpleTypeSpec ` NUMBER
| SimpleTypeSpec ` NUMBER '[' GenericArguments ']'
;
GenericArguments
: GenericArgument
| GenericArguments ',' GenericArgument
;
GenericArgument
: TypeSpec
| '[' TypeSpec ']'
;
PointerTypeSpec
: SimpleTypeSpec '*'
;
ArrayTypeSpec
: SimpleTypeSpec '[ReflectionDimension]'
| SimpleTypeSpec '[ReflectionEmitDimension]'
;
ReflectionDimension
: '*'
| ReflectionDimension ',' ReflectionDimension
| NOTOKEN
;
ReflectionEmitDimension
: '*'
| Number '..' Number
| Number '…'
| ReflectionDimension ',' ReflectionDimension
| NOTOKEN
;
Number
: [0-9]+
;
TypeName
: NamespaceTypeName
| NamespaceTypeName ',' AssemblyNameSpec
;
NamespaceTypeName
: NestedTypeName
| NamespaceSpec '.' NestedTypeName
;
NestedTypeName
: IDENTIFIER
| NestedTypeName '+' IDENTIFIER
;
NamespaceSpec
: IDENTIFIER
| NamespaceSpec '.' IDENTIFIER
;
AssemblyNameSpec
: IDENTIFIER
| IDENTIFIER ',' AssemblyProperties
;
AssemblyProperties
: AssemblyProperty
| AssemblyProperties ',' AssemblyProperty
;
AssemblyProperty
: AssemblyPropertyName '=' AssemblyPropertyValue
;
Özel karakterler belirtme
Tür adında TANıMLAYıCı, bir dilin kuralları tarafından belirlenen herhangi bir geçerli addır.
Tanımlayıcı'nın bir parçası olarak kullanıldığında aşağıdaki belirteçleri ayırmak için kaçış karakteri olarak ters eğik çizgi (\) kullanın.
| Jeton | Anlamı |
|---|---|
\, |
Derleme ayırıcısı. |
\+ |
İç içe tür ayırıcısı. |
\& |
Referans türü. |
\* |
İşaretçi türü. |
\[ |
Dizi boyutu sınırlayıcısı. |
\] |
Dizi boyutu sınırlayıcısı. |
\. |
Noktanın dizi belirtiminde kullanılması durumunda nokta öncesinde ters eğik çizgi kullanın. NamespaceSpec içindeki noktalarda ters eğik çizgi alınmaz. |
\\ |
Gerektiğinde dize değişmezleri olarak ters taksim işareti. |
AssemblyNameSpec dışındaki tüm TypeSpec bileşenlerinde boşluklar geçerlidir. AssemblyNameSpec'te, ',' ayırıcıdan önceki boşluklar uygun olur, ancak ',' ayırıcıdan sonraki boşluklar yoksayılır.
Yansıma sınıfları, Type.FullName, GetType çağrısında kullanılması amacıyla karıştırılmış adı döndürür, tıpkı MyType.GetType(myType.FullName) örneğinde olduğu gibi.
Örneğin, bir türün tam nitelikli adı şu şekilde olabilir: Ozzy.OutBack.Kangaroo+Wallaby,MyAssembly.
Ad alanı Ozzy.Out+Back ise, artı işaretinin önüne ters eğik çizgi gelmelidir. Aksi takdirde, ayrıştırıcı bunu iç içe ayırıcı olarak yorumlar. Yansıma bu dizeyi Ozzy.Out\+Back.Kangaroo+Wallaby,MyAssembly olarak yayar.
Derleme adlarını belirtme
Bir derleme adı belirtiminde gereken asgari bilgi, derlemenin metin adıdır (IDENTIFIER). TANıMLAYıCı'yı, aşağıdaki tabloda açıklandığı gibi, özellik/değer çiftlerinin virgülle ayrılmış bir listesiyle izleyebilirsiniz. TANıMLAYıCı adlandırma, dosya adlandırma kurallarına uymalıdır. TANıMLAYıCı büyük/küçük harfe duyarlı değildir.
| Özellik adı | Açıklama | İzin verilebilen değerler |
|---|---|---|
| Sürüm | Derleme sürüm numarası | Major.Minor.Build.Revision; burada Major, Minor, Build ve Revision , 0 ile 65535 (dahil) arasındaki tamsayılardır. |
| PublicKey | Tam ortak anahtar | Tam ve açık anahtarın onaltılık biçimdeki dize değeri. Özel bir derlemeyi açıkça belirtmek için boş referans (Nothing in Visual Basic) belirtin. |
| PublicKeyToken | Ortak anahtar belirteci (tam ortak anahtarın 8 bayt karması) | Ortak anahtar belirtecinin onaltılık biçimdeki dize değeri. Özel bir derlemeyi açıkça belirtmek için boş referans (Nothing in Visual Basic) belirtin. |
| Kültür | Toplanma kültürü | RFC-1766 biçiminde birleştirme kültürü veya dilden bağımsız (uydusuz) birleştirmeler için "nötr". |
| Özel | Özel ikili büyük nesne (BLOB). Bu, şu anda yalnızca Yerel Görüntü Oluşturucu (Ngen) tarafından oluşturulan derlemelerde kullanılır. | Yerel Görüntü Oluşturucu aracı tarafından, yüklenen derlemenin yerel bir görüntü olduğunu ve bu nedenle yerel görüntü önbelleğine yükleneceğini derleme önbelleğine bildirmek için kullanılan özel dize. Zap dizesi olarak da adlandırılır. |
Aşağıdaki örnekte, varsayılan kültüre sahip basit adlandırılmış bir derleme için AssemblyName gösterilmektedir.
com.microsoft.crypto, Culture=""
Aşağıdaki örnekte, "en" kültürüne sahip güçlü adlandırılmış bir derleme için tam olarak belirtilen bir başvuru gösterilmektedir.
com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0
Aşağıdaki örneklerin her biri kısmen belirtilen bir AssemblyName gösterir ve bu, güçlü veya basit adlandırılmış bir derleme tarafından karşılanabilir.
com.microsoft.crypto
com.microsoft.crypto, Culture=""
com.microsoft.crypto, Culture=en
Aşağıdaki örneklerin her biri, basitçe adlandırılmış bir derleme tarafından karşılanması gereken kısmen belirtilmiş bir AssemblyName örneğini gösterir.
com.microsoft.crypto, Culture="", PublicKeyToken=null
com.microsoft.crypto, Culture=en, PublicKeyToken=null
Aşağıdaki örneklerin her biri, güçlü adlandırılmış bir derleme tarafından karşılanması gereken kısmen belirtilmiş bir AssemblyName gösterir.
com.microsoft.crypto, Culture="", PublicKeyToken=a5d015c7d5a0b012
com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0
Genel türleri belirtme
SimpleTypeSpec`NUMBER 1 ile n genel tür parametreleri arasında genel tür tanımını temsil eder. Örneğin, açık genel türüne List<T>başvuru almak için kullanın Type.GetType("System.Collections.Generic.List`1"). Açık genel türüne Dictionary<TKey,TValue> başvuru almak için Type.GetType("System.Collections.Generic.Dictionary`2") kullanın.
Tür parametrelerinin belirli türlerle değiştirildiği , yapılandırılmış bir genel tür belirtmek için, tür bağımsız değişkenlerini arity'nin ardından köşeli ayraç içine ekleyin: SimpleTypeSpec`NUMBER[TypeArg1,TypeArg2]. Örneğin, bir List<String> referansı almak için Type.GetType("System.Collections.Generic.List`1[System.String]") kullanın.
Dictionary<String, Int32> öğesine referans almak için Type.GetType("System.Collections.Generic.Dictionary`2[System.String,System.Int32]") kullanın.
Bir tür bağımsız değişkeni derlemeye uygun olduğunda, derleme adındaki virgüllerin tür bağımsız değişkeni ayırıcıları olarak yanlış yorumlanmasını önlemek için bunu kendi köşeli ayraç içine alın. Örneğin:
"System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib],[System.Int32, System.Private.CoreLib]]"
Parantezsiz tür bağımsız değişkenleri derleme niteleyicisi içeremez. Derleme nitelikli ve nitelenmemiş tür bağımsız değişkenlerini karıştırmak için, yalnızca derlemeye uygun olanları köşeli ayraç içine alın:
"System.Collections.Generic.Dictionary`2[System.String,[MyNamespace.MyType, MyAssembly]]"
Özellik, bir türün Type.AssemblyQualifiedName'in kabul ettiği biçimde adını döndürür. Herhangi bir genel tür için doğru biçimlendirilmiş bir dize elde etmek için kullanın. Örneğin, typeof(Dictionary<string, int>).AssemblyQualifiedName öğesi Type.GetType'e geçirebileceğiniz kaçış karakterli tam nitelikli adı döndürür.
İşaretçileri belirtme
SimpleTypeSpec* yönetilmeyen bir işaretçiyi temsil eder. Örneğin, MyType türüne bir işaretçi almak için Type.GetType("MyType*") kullanın. MyType yazacak bir işaretçiyi almak için kullanın Type.GetType("MyType**").
Referansları belirtin
SimpleTypeSpec & yönetilen bir işaretçiyi veya başvuruyı temsil eder. Örneğin, MyType türüne referans almak için Type.GetType("MyType &")'yi kullanın. İşaretçilerin aksine, referanslar bir düzeyle sınırlıdır.
Dizileri belirtme
BNF Dil Bilgisi'nde ReflectionEmitDimension yalnızca ModuleBuilder.GetType kullanılarak alınan eksik tür tanımlarına uygulanır. Tamamlanmamış tür tanımları, TypeBuilder kullanılarak oluşturulmuş ama üzerinde System.Reflection.Emit çağrılmamış TypeBuilder.CreateType nesnelerdir. ReflectionDimension, tamamlanmış herhangi bir tür tanımını, yani yüklenmiş bir türü almak için kullanılabilir.
Dizilere, dizinin derecesi belirtilerek yansıma özelliği ile erişilir.
-
Type.GetType("MyArray[]")0 alt sınıra sahip tek boyutlu bir dizi alır. -
Type.GetType("MyArray[*]")bilinmeyen alt sınıra sahip tek boyutlu bir dizi alır. -
Type.GetType("MyArray[][]")iki boyutlu bir dizinin dizisini alır. -
Type.GetType("MyArray[*,*]")veType.GetType("MyArray[,]")bilinmeyen alt sınırları olan dikdörtgen iki boyutlu bir dizi alır.
Çalışma zamanı açısından MyArray[] != MyArray[*], ancak çok boyutlu diziler için iki gösterim eşdeğerdir. Yani, Type.GetType("MyArray [,]") == Type.GetType("MyArray[*,*]")true olarak değerlendirilir.
için ModuleBuilder.GetType, MyArray[0..5] boyut 6, alt sınır 0 olan tek boyutlu bir diziyi gösterir.
MyArray[4…] bilinmeyen boyutta ve alt sınır 4'ün tek boyutlu bir dizisini gösterir.