سؤال

أنا أستخدم سيسيل لمحاولة قراءة خصائص صفاتي:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public sealed class TraceMethodAttribute : Attribute {
    public TraceMethodAttribute() {
        MethodStart = true;
        MethodReturn = true;
        MethodMessages = true;
    }

    public bool MethodStart { get; set; }
    public bool MethodReturn { get; set; }
    public bool MethodMessages { get; set; }
}

[TraceMethod(MethodMessages = false)]
static void Main(string[] args) {
}

...

if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {         
  if ((bool)attribute.Fields["MethodMessages"] == true) {
        EditMethodStart(assembly, method);
  }

هذا، أود هذا الكتلة الأخيرة من التعليمات البرمجية للتحقق عند تطبيق السمة المطبقة على Main، على سبيل المثال، يحتوي على methodmessages مع TRUE أو FALSE. من ما رأيته، يبدو وكأنه كلا من attributes.cields.count and setibutes.properties.count تم ضبطه على 0. لماذا هو؟

شكرا

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

المحلول

يجب أن تعمل بشكل جيد من خلال الوصول إلى مجموعة الخصائص بواسطة الفهرس.

if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {         
  if ((bool)attribute.Properties["MethodMessages"] == true) {
        EditMethodStart(assembly, method);
  }

فقط جمعت وفحصها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top