مشاركة عبر


أسلوب IMetaDataEmit::MergeEnd

يدمج الجميع نطاقات بيانات التعريف المحددة بواسطة المكالمات السابقة أو أكثر إلى من IMetaDataEmit::دمج في نطاق الحالي.

HRESULT MergeEnd ();

المعلمات

تأخذ هذه الطريقة بدون معلمات.

ملاحظات

This routine مشغلات the الفعلي دمج of بيانات التعريف, of الجميع استيراد scopes specified بواسطة preceding calls إلى IMetaDataEmit::Merge, في the الحالي إخراج نطاق.

يطبق الشروط الخاصة التالية إلى الدمج:

  • A وحدة نمطية? الإصدار معرّف (MVID) هو ‏‏مطلقاً imported, because it هو فريد إلى the بيانات التعريف في the استيراد نطاق.

  • لا موجود وحدة نمطية?-wide خصائص are overwritten.

    If وحدة نمطية? خصائص were already التعيين for the الحالي نطاق, لا وحدة نمطية? خصائص are imported. However, if وحدة نمطية? خصائص have not been التعيين في the الحالي نطاق, they are imported فقط once, when they are أول encountered. If those وحدة نمطية? خصائص are encountered again, they are duplicates. If the قيم of الجميع وحدة نمطية? خصائص (except MVID) are compared و لا duplicates are found, an خطأ هو مرفوع.

  • For نوع ملفات تعريف (TypeDef), لا duplicates are merged في the الحالي نطاق. TypeDef الكائنات are محدد for duplicates against each مؤهّل بالكامل كائن اسم + معرّف فريد عالمي + الإصدار رقم. If there هو a مطابقة تشغيل either اسم أو معرّف فريد عالمي, و أي of the غير ذلك الثاني عناصر هو different, an خطأ هو مرفوع. Otherwise, if الجميع three عناصر مطابقة, MergeEnd does a cursory فحص إلى ensure the entries are indeed duplicates; if not, an خطأ هو مرفوع. This cursory فحص looks for:

    • The same عضو تصريحات, occurring في the same ترتيب. الأعضاء that are وضعت لها علامة كـ mdPrivateScope (see the CorMethodAttr قائمة تعداد) are غير مُضمن في this فحص; they are merged specially.

    • The same فئة تخطيط.

    This means that a TypeDef كائن must دوماً be fully و consistently defined في every بيانات التعريف نطاق في which it هو declared; if its عضو implementations (for a فئة) are امتداد لوني عبر multiple compilation وحدات, the كامل تعريف هو assumed إلى be موجود في every نطاق و not تزايدي إلى each نطاق. For مثال, if معلمة أسماء are relevant إلى the اتفاق, they must be emitted the same way في every نطاق; if they are not relevant, they should not be emitted في بيانات التعريف.

    The ‏‏ استثناء هو that a TypeDef كائن can have تزايدي الأعضاء وضعت لها علامة كـ mdPrivateScope. تشغيل encountering these, MergeEnd incrementally adds them إلى the الحالي نطاق without regard for duplicates. Because the compiler understands the private نطاق, the compiler must be responsible for enforcing rules.

  • نسبي ظاهري addresses (RVAs) are not imported أو merged; the compiler هو expected إلى re-emit this معلومات.

  • مخصص السمات are merged فقط when the العنصر إلى which they are attached هو merged. For مثال, مخصص السمات associated مع a فئة are merged when the فئة أول encountered. If مخصص السمات are associated مع a TypeDef أو MemberDef that هو specific إلى the compilation unit (such كـ the طابع زمني of a عضو يحول برمجياً), they are not merged و it هو لأعلى إلى the compiler إلى إزالة أو تحديث such بيانات التعريف.

المتطلبات

الأنظمة الأساسية: See متطلبات النظام إطار عمل .NET.

**Header:**Cor.h

المكتبة: Used كـ a مورد في MSCorEE.dll

.NET Framework Versions: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1

راجع أيضًا:

المرجع

واجهة IMetaDataEmit

واجهة IMetaDataEmit2