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
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ı. |
\& |
Başvuru 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 açık bir genel türü temsil eder. Örneğin, açık genel tür List<T> veya kapalı genel tür List<String> için başvuru almak üzere Type.GetType("System.Collections.Generic.List`1")'yi kullanın. Genel tür Dictionary<TKey,TValue> için başvuru almak üzere Type.GetType("System.Collections.Generic.Dictionary`2")'ü kullanın.
İş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.