في أي وقت أثناء وقت التشغيل ، يتم تشغيل مُنشئ السمات؟

StackOverflow https://stackoverflow.com/questions/617273

  •  03-07-2019
  •  | 
  •  

سؤال

محاولة العثور على بعض المرجع المطوّل على تعقيدات السمات. سيكون موضع تقدير أي مساعدة.

في هذه المرحلة ، أود على وجه التحديد أن أعرف ما هو الوقت خلال وقت التشغيل الذي يتم تشغيله مُنشئ السمات؟

  • إذا كان فوق الفصل
  • إذا كان فوق عقار
  • إذا كان الأمر فوق طريقة

شكرًا.

هل كانت مفيدة؟

المحلول

يتم استدعاء المُنشئ عند الاتصال بـ getCustomAttributes () على النوع أو العضو.

نصائح أخرى

قراءة المعيار (17.3.2 في إصدار C# 2.0) غير محدد. فقط طريقة التحويل من metatada إلى مثيل هي.

لذلك قد تحتاج إلى اختبار تطبيقات مختلفة ، لأنه إذا لم يتم تحديده ، فمن المحتم أن يتم تفسيره بشكل مختلف.

الشيء الوحيد الذي يمكنك التأكد من أنه سيتم استدعاؤه من قبل هو الحاجة. لم يتم تعريفه في الوقت المحدد الذي سيتم فيه استدعاء المنشئ.

على أي حال ، فإن السلوك غير محدد ، لذلك يجب ألا تعتمد عليه عندما يتم استدعاء البناء من قبل التنفيذ الحالي.

السمة هي زينة تخزن البيانات الوصفية أو المعلومات حول نوع ما. يستخدم .NET Framework هذا النوع من المعلومات بشكل كبير للقيام بمعالجة إضافية عند إنشاء مثيلات.

يتم إنشاء السمة فقط عند طلب بعض الفصول الأخرى ، مع type.getCustomAttributes () على سبيل المثال. لذلك ، حتى يمكنك إنشاء سماتك الخاصة ثم يسأل عن سماتك المخصصة.

public class MyOwnAttribute: Attribute {}

/ * في مرحلة ما في فئة أخرى */

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top