تجميعات collectible ديناميكي نوع إنشاء
تعتبر تجميعات collectible تجميعات ديناميكي التي يمكن إلغاء تحميل دون إلغاء تحميل مجال تطبيق التي تم إنشاؤها. كافة مدارة و غير مدارة ذاكرة المستخدمة من قبل تجميع collectible و استخلاص عن أنواع يحتوي على. معلومات مثل اسم تجميع هو إزالتها من جدول داخلي.
إلى تمكين إلغاء تحميل، استخدم AssemblyBuilderAccess.RunAndCollectإشارة عند إنشاء تجميع ديناميكي. يتم تجميع العابر (وهذا يعني أنه لا يمكن تم الحفظ) و يخضع للقيود المذكورة في تقييدات تشغيل تجميعات Collectible مقطع. يلغي وقت تشغيل اللغة العامة (CLR) تجميع collectible تلقائياً عندما تم إصدارها بكافة الكائنات المقترنة مع التجميع. في الجميع نواحي غير ذلك، يتم تاريخ الإنشاء تجميعات collectible واستخدامها بنفس الطريقة التجميعات ديناميكي الأخرى.
مدة بقاء للتجميعات Collectible
عمر تجميع حيوي collectible هو التحكم بواسطة exهوtence مراجع تحتوي على الأنواع والكائنات التي تم إنشاؤها من هذه الأنواع. لم وقت تشغيل اللغة العامة إلغاء تحميل تجميع كما طويلة كواحد أو أكثر من exهوt التالية ( Tهو أي نوع التي هو في التجميع):
مثيل T.
مثيل في صفيفة من T، أو مثيل للمجموعة العامة له Tكوسيطة من وسيطات النوع الخاص به أو صفيفة حتى إذا كان ذلك أو مجموعة هو فارغ.
مثيل Typeأو TypeBuilderالذي يمثل T.
ملاحظة |
---|
يجب أن تقوم بتحرير الجميع الكائنات التي تمثل أجزاء من تجميع.ModuleBuilderالمعرفة التي Tيحتفظ مرجع إلى TypeBuilder، و AssemblyBuilderيحتفظ الكائن مرجع ModuleBuilder، لذلك يجب أن يتم إصدار المراجع إلى هذه الكائنات.وجود على LocalBuilderأو ILGeneratorالمستخدمة في البناء من حتى Tيمنع إلغاء تحميل. |
مرجع ثابتة Tحسب النوع المعرف بشكل حيوي آخر T1التي هو لا تزال قابلة للوصول بتنفيذ تعليمات برمجية. ل مثال، T1قد ينحدر من T، أو Tقد يكون نوع معلمة في أسلوب T1.
على ByRefإلى حقل ثابت الذي ينتمي إلى T.
على RuntimeTypeHandle، RuntimeFieldHandle، أو RuntimeMethodHandleالتي تشير إلى Tأو أحد مكونات T.
مثيل لأي كائن الانعكاس يمكن استخدامها مباشرة أو غير مباشر للوصول إلى Typeالكائن الذي يمثل T. على سبيل المثال، Typeكائن ل Tيمكن الحصول على من نوع صفيفة عنصر له اكتب هو T، أو من نوع عام له Tكوسيطة النوع.
تشغيل أسلوب Mتشغيل مكدس الاستدعاءات أي مؤشر ترابط الموقع Mهو أسلوب Tأو أسلوب المستوى وحدة نمطية? التي هو في تجميع.
مفوض لأسلوب ثابت الذي هو معرف في وحدة نمطية للتجميع.
إذا كان موجود عنصر واحد من هذه القائمة لواحد فقط نوع أو أسلوب واحد في تجميع، وقت التشغيل لا يمكن إلغاء تحميل تجميع.
ملاحظة |
---|
وقت التشغيل غير فعلياً تحميل تجميع حتى يتم تشغيله finalizers لكافة عناصر في القائمة. |
لأغراض تعقب مدة بقاء، اكتب عام constructed مثل List<int>(List(Of Integer)in Vهوual أساسى) التي هو إنشاؤها ويتم استخدامها في تاريخ الإنشاء التجميع collectible هو اعتبار إلى تم تعريفها في التجميع الذي يحتوي على تعريف نوع عام أو في تجميع الذي يحتوي على تعريف إحدى وسيطات النوع الخاص به. تجميع الدقيق الذي يستخدم هو تفصيل تطبيق والموضوع إلى تغيير.
قيود تشغيل تجميعات Collectible
تطبق القيود التالية للتجميعات collectible:
ثابت مراجعلا يمكن أن تحتوي أنواع في تجميع حيوي عادية ثابت مراجع إلى الأنواع التي تم تعريفها في تجميع collectible. على سبيل المثال، إذا قمت بتعريف أحد أنواع عادية التي ترث نوعا في تجميع collectible NotSupportedExceptionطرح استثناء. نوع في تجميع collectible يمكن مراجع ثابتة إلى نوع في التجميع collectible آخر، ولكن ذلك بتوسيع عمر التجميع المشار إليه لعمر التجميع المرجعي.
توافق COM لا COM الواجهات can be defined within a collectible تجميع, و لا instances of أنواع within a collectible تجميع can be محول في COM الكائنات. A نوع في a collectible تجميع cannot serve كـ a COM callable برنامج تضمين (CCW) أو وقت التشغيل callable برنامج تضمين (RCW). However, أنواع في collectible تجميعات can استخدم الكائنات that implement COM الواجهات.
النظام الأساسي invoke وظائف that have the DllImportAttribute سمة will not يحول برمجياً when they are declared within a collectible تجميع. The OpCodes.Calli تعليمة cannot be used في the implementation of a نوع في a collectible تجميع, و such أنواع cannot be marshaled إلى تعليمات برمجية غير مُدارة. However, you can يتصل في أصلي تعليمات برمجية بواسطة using an إدخال يؤشر that هو declared in a non-collectible تجميع.
التنظيم والإرسال الكائنات that are defined في collectible تجميعات (في particular, المفوضون) cannot be marshaled. This هو a restriction تشغيل الجميع transient emitted أنواع.
تجميع تحميل انعكاس emit هو the فقط mechanism that هو supported for تحميل collectible تجميعات. تجميعات that are تم تحميله بواسطة أي غير ذلك نموذج of تجميع تم تحميله cannot be unloaded.
سياق-حدود الكائنات سياق-ثابت متغيرات are not supported. أنواع في a collectible تجميع cannot extend ContextBoundObject. ومع ذلك، يمكن التعليمة البرمجية في تجميعات collectible استخدم الكائنات المرتبطة بالسياق التي تم تعريفها في مكان آخر.
بيانات مؤشر ترابط الثابتةلا يتم اعتماد المتغيرات الثابتة مؤشر ترابط.