سؤال

يمكنني استخدام typedescriptor.addattributes لإضافة سمة إلى نوع في وقت التشغيل. كيف أفعل نفس الشيء للطريقة والمعلمة؟ (ربما 2 سؤال منفصل ...)

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

المحلول

TypeDescriptor.AddAttributes يؤثر فقط على جداً حالة استخدام محددة ؛ أي من الداخل System.ComponentModel. ل راحة من التفكير ، يعرف لا شيئ حول السمة الإضافية. وحقيقة، System.ComponentModel لا ينطبق حقًا على الطرق أو المعلمات.

باختصار لا يمكنك. ستحتاج إلى تخزين هذه المعلومات في مكان آخر (مفصل) ، أو إضافتها في وقت الترجمة.

نصائح أخرى

كما أرى من تحليل TypeDescriptor الفصل في العاكس ، .AddAttributes الطريقة تستدعي داخليًا .AddProvider طريقة. ال TypeDescriptionProvider تم تمرير مثيله هو المسؤول فعليًا عن توفير بيانات التعريف. يمكنك محاولة إضافة سمة [typedescriptionproviderattribute TypeDescriptionProvider صف دراسي. كما تقول الوثائق ، عن طريق تجاوز TypeDescriptionProvider.CreateInstance, ، يمكنك توفير كائن بديل له كل السمات الضرورية. أظن أن السمات المطبقة على الأساليب داخل نوع الاستبدال ستصبح سارية المفعول أيضًا. ومع ذلك ، لم أحاول ذلك بنفسي ، لذلك لا تتردد في التجربة ...

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