أدخل typeconverter مخصص على خاصية في وقت التشغيل ، من داخل uitypeeditor مخصص
-
22-09-2019 - |
سؤال
لقد أنشأت uitypeeditor مخصص.
هل يمكنني إدراج سمة ترفق أيضًا مجموعة من الممتلكات الخاصة بي من الممتلكات داخل فئة UityPeeditor؟
لقد جربت ما يلي ، لكن لا شيء يحدث ، بغض النظر عن كيفية تحريفه وأداره:
Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));
الآن ، يحتاج ما سبق إلى إرفاق ما يلي بطريقة أو بأخرى:
TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);
... لكن أولاً وقبل كل شيء ، لا أعرف كيفية الوصول إلى الممتلكات المعنية بطريقة عامة ، وكل الرموز التي أحاولها تفشل. حتى لو حاولت تعيين typeconverter بهذه الطريقة على مستوى العالم ، فإنه يفشل. (تعيينه كسممة على العقار نفسه يعمل ، لمجرد استبعاد أن الخطأ في هذا الجزء.)
المحلول
TypeDescriptor
يتيح لك إضافة سمات (على الأقل ، بقدر ما System.ComponentModel
معني) ل الأنواع و أشياء - ولكن ليس لخصائص محددة. للقيام بذلك (بطريقة عامة تتطلب TypeDescriptionProvider
- ومع ذلك ، يُنصح أن هذا ليس شيئًا تافهاً للتنفيذ ، وتحتاج إلى كتابة كل ما يلي:
- المزود نفسه
- و
ICustomTypeDescriptor
- أ
PropertyDescriptor
للأشياء التي تريد معالجتها
انها PropertyDescriptor
من شأنه أن يسمح لك بالتظاهر بأن لديك سمات إضافية (أو عبر override
غير ال Converter
بشكل مباشر أكثر ، دون العبث بالسمات).