Вставьте пользовательский TypeConverter в свойство во время выполнения из пользовательского UITypeEditor - PullRequest
2 голосов
/ 29 марта 2010

Я создал пользовательский UITypeEditor.

Могу ли я вставить атрибут, который также присоединяет TypeConverter к моему свойству из внутри класса UITypeEditor?

Я попробовал следующее, но ничего не происходит, как бы я ни крутил и поворачивал:

Attribute[] newAttributes = new Attribute[1];
newAttributes[0] = new TypeConverterAttribute(typeof(BooleanConverter));

Теперь к вышесказанному нужно как-то прикрепить следующее:

TypeDescriptor.AddAttributes(context.Instance.PROPERTYNAME, newAttributes);

... но, во-первых, я не знаю, как добраться до рассматриваемого свойства в общем виде, и весь код, который я пробую, просто терпит неудачу. Даже если я попытаюсь назначить TypeConverter таким образом, это не удастся. (Установка его в качестве атрибута в самом свойстве работает, хотя, только для исключения ошибки в этой части.)

1 Ответ

2 голосов
/ 29 марта 2010

TypeDescriptor позволяет добавлять атрибуты (по крайней мере, в отношении System.ComponentModel) к типам и объектам - но не к определенным свойствам. Для этого (как правило, потребуется TypeDescriptionProvider - однако имейте в виду, что это не тривиальная вещь для реализации, и вам нужно написать все:

  • сам провайдер
  • и ICustomTypeDescriptor
  • a PropertyDescriptor для вещей, которыми вы хотите манипулировать

Это PropertyDescriptor, который позволит вам притвориться, что у вас есть дополнительные атрибуты (или, через override изменить Converter более напрямую, без вмешательства в атрибуты).

...