Aracılığıyla paylaş


Tam nitelikli tür adlarını belirtin

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[*,*]") ve Type.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.

Ayrıca bakınız