Tam tür adlarını belirtme
Çeşitli yansıma işlemlerine geçerli giriş yapmak için tür adlarını belirtmeniz gerekir. Tam tür adı, derleme adı belirtimi, ad alanı belirtimi ve tür adından oluşur. Tür adı belirtimleri , , Module.GetTypeModuleBuilder.GetTypeve Assembly.GetTypegibi Type.GetTypeyö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. Terim olmayanlar (daha da azaltılabilir öğeler) karışık veya tek tırnaklı dizelerde gösterilir, ancak tek tırnak (') söz diziminin bir parçası değildir. Kanal 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.
Belirteç | 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. |
\\ |
Dize değişmez değeri olarak gerektiğinde ters eğik çizgi. |
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.
gibi Type.FullNameDüşünceler ion sınıfları, döndürülen adın içinde olduğu gibi MyType.GetType(myType.FullName)
çağrısında kullanılabilmesi için GetTypemangled adını döndürür.
Örneğin, bir türün tam adı olabilir Ozzy.OutBack.Kangaroo+Wallaby,MyAssembly
.
Ad alanı ise Ozzy.Out+Back
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. Düşünceler ion bu dizeyi olarak Ozzy.Out\+Back.Kangaroo+Wallaby,MyAssembly
yayar.
Derleme adlarını belirtme
Derleme adı belirtiminde gereken en düşük 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 ortak anahtarın onaltılık biçimdeki dize değeri. Özel bir derlemeyi açıkça belirtmek için null başvuru (Visual Basic'te hiçbir şey ) 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 null başvuru (Visual Basic'te hiçbir şey ) belirtin. |
Kültür | Derleme kültürü | Rfc-1766 biçiminde derleme kültürü veya dilden bağımsız (bağımsız) derlemeler 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 kesin olarak 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, yalnızca adlandırılmış bir derleme tarafından karşılanması gereken kısmen belirtilmiş bir AssemblyName gösterir.
com.microsoft.crypto, Culture="", PublicKeyToken=null
com.microsoft.crypto, Culture=en, PublicKeyToken=null
Aşağıdaki örneklerin her biri, kesin olarak 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üre veya kapalı genel türe List<T>
List<String>
başvuru almak için, Type.GetType("System.Collections.Generic.List`1")
genel türe Dictionary<TKey,TValue>
başvuru almak için kullanın Type.GetType("System.Collections.Generic.Dictionary`2")
.
İşaretçileri belirtme
SimpleTypeSpec* yönetilmeyen bir işaretçiyi temsil eder. Örneğin, MyType yazacak bir işaretçi almak için kullanın Type.GetType("MyType*")
. MyType yazacak bir işaretçiyi almak için kullanın Type.GetType("MyType**")
.
Başvuruları belirtme
SimpleTypeSpec & yönetilen bir işaretçiyi veya başvuruyı temsil eder. Örneğin, MyType türüne bir başvuru almak için kullanın Type.GetType("MyType &")
. İşaretçilerin aksine, başvurular bir düzeyle sınırlıdır.
Dizileri belirtme
BNF Dil Bilgisi'nde, Düşünceler ionEmitDimension yalnızca kullanılarak ModuleBuilder.GetTypealınan tamamlanmamış tür tanımlarına uygulanır. Tamamlanmamış tür tanımları kullanılarak System.Reflection.Emit ama üzerinde TypeBuilder.CreateType çağrılmamış nesnelerdirTypeBuilder. Düşünceler ionDimension, tamamlanmış herhangi bir tür tanımını, yani yüklenmiş bir türü almak için kullanılabilir.
Dizilere, dizinin derecesini belirterek yansıma olarak 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österimi 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 bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin