إضافة برمجيا سمة إلى طريقة أو معلمة
-
25-09-2019 - |
سؤال
يمكنني استخدام typedescriptor.addattributes لإضافة سمة إلى نوع في وقت التشغيل. كيف أفعل نفس الشيء للطريقة والمعلمة؟ (ربما 2 سؤال منفصل ...)
المحلول
TypeDescriptor.AddAttributes
يؤثر فقط على جداً حالة استخدام محددة ؛ أي من الداخل System.ComponentModel
. ل راحة من التفكير ، يعرف لا شيئ حول السمة الإضافية. وحقيقة، System.ComponentModel
لا ينطبق حقًا على الطرق أو المعلمات.
باختصار لا يمكنك. ستحتاج إلى تخزين هذه المعلومات في مكان آخر (مفصل) ، أو إضافتها في وقت الترجمة.
نصائح أخرى
كما أرى من تحليل TypeDescriptor
الفصل في العاكس ، .AddAttributes
الطريقة تستدعي داخليًا .AddProvider
طريقة. ال TypeDescriptionProvider
تم تمرير مثيله هو المسؤول فعليًا عن توفير بيانات التعريف. يمكنك محاولة إضافة سمة [typedescriptionproviderattribute TypeDescriptionProvider
صف دراسي. كما تقول الوثائق ، عن طريق تجاوز TypeDescriptionProvider.CreateInstance
, ، يمكنك توفير كائن بديل له كل السمات الضرورية. أظن أن السمات المطبقة على الأساليب داخل نوع الاستبدال ستصبح سارية المفعول أيضًا. ومع ذلك ، لم أحاول ذلك بنفسي ، لذلك لا تتردد في التجربة ...