تحديد أسماء أنواع مؤهل بالكامل
يجب تحديد نوع أسماء لجعل إدخال صالح لعمليات انعكاس المتنوعة. الكامل اسم النوع يتكون من هي مواصفة اسم التجميع، ومواصفات مساحة الاسم، اسم النوع. مواصفات اسم نوع مستخدمة بواسطة الأساليب مثل Type.GetType، Module.GetType، ModuleBuilder.GetType، و Assembly.GetType.
تدقيق نحوي نموذج Backus-Naur لنوع من الأسماء
نموذج Backus-Naur (BNF) بتعريف بناء الجملة الخاص باللغات الرسمية. يسرد الجدول التالي قواعد لغوي BNF التي تصف كيفية التعرف على إدخال صالح. المحطات الطرفية (هذه عناصر غير المزيد من reducible) موضحة بأحرف كبيرة. nonterminals (العناصر التي يتم الحصول على مزيد من reducible) المبينة في سلسلة بين علامات الاقتباس مفرد أو الحالة مختلط، وعلامة اقتباس مفردة (') ليس جزءا من بناء الجملة نفسه. حرف توجيه الإخراج (|) إلى قواعد من subrules.
النحو BNF أسماء نوع المؤهل بالكامل |
---|
يتضمن TypeSpec: = ReferenceTypeSpec | SimpleTypeSpec |
ReferenceTypeSpec: = SimpleTypeSpec '&' |
SimpleTypeSpec: = PointerTypeSpec | ArrayTypeSpec | TypeName |
PointerTypeSpec: = SimpleTypeSpec '*' |
ArrayTypeSpec: = SimpleTypeSpec '[ReflectionDimension]' | SimpleTypeSpec '[ReflectionEmitDimension]' |
ReflectionDimension: = '*' | ReflectionDimension ReflectionDimension ',' | notoken |
ReflectionEmitDimension: = '*' | رقم '' رقم | رقم …' | ReflectionDimension ReflectionDimension ',' | notoken |
رقم := [0-9]+ |
TypeName: = NamespaceTypeName | NamespaceTypeName AssemblyNameSpec ',' |
NamespaceTypeName: = NestedTypeName | NamespaceSpec '.' NestedTypeName |
NestedTypeName: معرّف = | NestedTypeName المعرف '+' |
NamespaceSpec: معرّف = | NamespaceSpec '.' معرّف |
AssemblyNameSpec: معرّف = | معرّف AssemblyProperties ',' |
AssemblyProperties: = AssemblyProperty | AssemblyProperties AssemblyProperty ',' |
AssemblyProperty: = AssemblyPropertyValue AssemblyPropertyName '=' |
تعيين أحرف خاص
اسم نوع، معرّف هو أي اسم صالح يفرضها قواعد لغة.
استخدام خط مائل عكسي(\) (\) كحرف هروب إلى فصل التالي إلى kens عند استخدامها كجزء من المعرف.
رمز مميز |
المعنى |
---|---|
\, |
فاصل تجميع. |
\+ |
فاصل نوع متداخل. |
\& |
نوع مرجع. |
\* |
نوع مؤشر. |
\[ |
صفيفة ذو بعد المحدد. |
\] |
صفيفة ذو بعد المحدد. |
\. |
استخدام خط مائل عكسي(\) قبل نقطة فقط إذا الفترة هو المستخدمة في هي مواصفة صفيفة. لا يكون هناك فترات في NamespaceSpec خط مائل عكسي(\). |
\\ |
Backslكـh عند الحاجة كـ سلسلة قيمة حرفية. |
ملاحظة أنه في الجميع مكونات يتضمن TypeSpec فيما عدا AssemblyNameSpec، المساحات ذات الصلة. في AssemblyNameSpec، مسافات قبل الفاصل 'او' ذات الصلة، ولكن يتم تجاهل مساحات ما بعد الفاصلة ','.
فئات الانعكاس، مثل Type.FullName، قم بإرجاع اسم mangled حيث يمكن استخدام الاسم الذي تم إرجاعه في على استدعاء إلى GetType، كما في MyType.GetType(myType.FullName).
على سبيل المثال، الاسم المؤهل بالكامل نوع قد يكون Ozzy.OutBack.Kangaroo+Wallaby,MyAssembly.
إذا كانت مساحة الاسم Ozzy.Out+Back، ثم يجب أن يسبق الجمع بواسطة الخط المائل العكسي. وإلا، محلل سيتم تفسير كـ فاصل تداخل. انعكاس emits هذه السلسلة كـ Ozzy.Out\+Back.Kangaroo+Wallaby,MyAssembly.
تحديد أسماء تجميع
معلومات الحد الأدنى المطلوب في مواصفات اسم تجميع هو اسم نصية (معرّف) التجميع. يمكنك اتباع معرّف حسب قائمة مفصولة بفواصل ازواج/قيمه خاصية كما هو موضح في الجدول التالي. تسمية معرّف اتباع قواعد تسمية الملفات. المعرف هو عدم تحسس حالة الأحرف.
اسم الخاصية |
الوصف |
قيم المسموح بها |
---|---|---|
Version |
رقم الإصدار تجميع |
رئيسي.ثانوي.Build.المراجعة، الموقع الرئيسية ثانوي ، بنية و مراجعة الإعداد الصحيحة التي تقع بين 0 و 65535 ضمناً. |
PublicKey |
مفتاح عام كامل |
سلسلة القيمة الالمفتاح العمومي بالكامل بالنظام الست عشري تنسيق. تعيين مرجع فارغ ( لا شيء في Visual أساسى) إلى وضوح الإشارة إلى تجميع خاص. |
PublicKeyToken |
رمز مفتاح عام (8 بايت تجزئة مفتاح عام كامل) |
سلسلة القيمة رمز مفتاح عام بالنظام الست عشري تنسيق. تعيين مرجع فارغ ( لا شيء في Visual أساسى) إلى وضوح الإشارة إلى تجميع خاص. |
الثقافة |
تجميع الثقافة |
الثقافة من تجميع في RFC-1766 التنسيق، أو "عادي" للتجميعات اللغة-فيdependent (nonsatellite). |
مخصص |
ثنائي كبير كائن مخصص (BLOB). Th هو هو المستخدمة حاليا فقط في تجميعات التي تم إنشاؤها بواسطة من منشئ الصورة الأصلية (منشئ الصورة الأصلية). |
السلاسل المخصصة المستخدمة من قبل الأداة "منشئ النسخة الأصلية" لإعلام تجميع الذي يتم تثبيت تجميع مؤقتاً هو نسخة أصلية، و هو لذلك بحيث يتم تثبيتها في ذاكرة تخزين مؤقت للنسخة الأصلية. ويسمى أيضا سلسلة zap. |
يظهر المثال التالي AssemblyName تجميع مسمى ببساطة بشكل افتراضي الثقافة.
com.microsoft.crypto, Culture=""
يلي مثال يظهر مرجع محدد بشكل كامل تجميع مسمى بشدة بالبيانات الموروثة "قصيره".
com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0
تبين الأمثلة التالية كل على محدد جزئيا AssemblyName ، التي يمكن أن يتحقق بواسطة قوية أو تجميع مسمى ببساطة.
com.microsoft.crypto
com.microsoft.crypto, Culture=""
com.microsoft.crypto, Culture=en
تبين الأمثلة التالية كل على محدد جزئيا AssemblyName ، التي يجب أن تكون مقتنعا بواسطة تجميع مسمى ببساطة.
com.microsoft.crypto, Culture="", PublicKeyToken=null
com.microsoft.crypto, Culture=en, PublicKeyToken=null
تبين الأمثلة التالية كل على محدد جزئيا AssemblyName ، التي يجب أن تكون مقتنعا بتجميع مسمى بشدة.
com.microsoft.crypto, Culture="", PublicKeyToken=a5d015c7d5a0b012
com.microsoft.crypto, Culture=en, PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0
تحديد المؤشرات
SimpleTypeSpec * يمثل مؤشر غير مدار. على سبيل المثال، للحصول على مؤشر نوع My نوع، استخدم Type.GetType("MyType*"). للحصول على مؤشر إلى مؤشر إلى My نوع نوع، استخدم Type.GetType("MyType**").
تحديد مراجع
SimpleTypeSpec & يمثل مؤشر المدارة أو المرجع. على سبيل المثال، إلى الحصول على مرجع إلى اكتب النوع الخاص بي، استخدم Type.GetType("MyType &"). لاحظ أن المؤشرات، بعكس مراجع تقتصر إلى المستوى واحد.
يحدد الصفيف
في النحو BNF، ReflectionEmitDimension تطبق إلى ملفات تعريف نوع غير كامل استرداد باستخدام ModuleBuilder.GetType. ملفات تعريف نوع غير كامل يتم TypeBuilderإنشاء باستخدام الكائنات من انعكاس.Emit ولكن تشغيل أي TypeBuilder.CreateTypeقد لا يتم استدعاء. يمكن استخدام ReflectionDimension لاسترداد أي تعريف النوع الذي تم إكماله، بمعنى، نوع تم تحميله.
يتم الوصول إلى الصفيف بانعكاس بواسطة تحديد رتبة الصفيف:
Type.GetType("MyArray[]")يحصل صفيفة ذات البعد الواحد ب 0 أقل حدود.
Type.GetType("MyArray[*]")يحصل صفيفة مفرد-البعد مع الحد الأدنى غير معروف.
Type.GetType("MyArray[][]")يحصل على صفيفة صفيفة ثنائي الأبعاد.
Type.GetType("MyArray[*,*]")وType.GetType("MyArray[,]")الحصول مستطيل صفيفة ثنائي الأبعاد مع الحدود السفلية غير معروف.
لاحظ أنه من وقت التشغيل نظر، MyArray[] != MyArray[*]، ولكنها للصفائف الأبعاد التعليقات التوضيحية الثاني مكافئ. أن هو، Type.GetType("MyArray [,]") == Type.GetType("MyArray[*,*]")يتم تقييمها إلى صحيحاً .
ل ModuleBuilder.GetType ، MyArray[0..5]يشير إلى منضمة صفيفة البعد بمفرده بحجم 6، أقل 0. MyArray[4…]تشير إلى صفيفة مفرد-البعد غير مجهول الحجم و حد سفلي 4.