أدخل typeconverter مخصص على خاصية في وقت التشغيل ، من داخل uitypeeditor مخصص

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

سؤال

لقد أنشأت 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 بشكل مباشر أكثر ، دون العبث بالسمات).

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