Интерфейс ICustomTypeDesctriptor: экспонирование специальной информации о типе

если вы не реализуете этот

Интерфейс ICustomTypeDesctriptor Позволяет объекту предоставить специальную информацию о типе в качестве информации, которую он хочет открыто экспонировать, чтобы потребляющий код мог попросить объект описать себя, а не использовать сырую рефлексию определения типа. Если вы не реализуете этот интерфейс, открытые свойства, определяемые вашим объектом, могут быть описаны для привязки данных и других целей классом TypeDescriptor Посредством рефлексии. Но если вы реализуете интерфейс, то сможете сами предоставлять классу TypeDescriptor Дескрипторы свойств. Благодаря этому вы можете экспонировать в целях привязки данных нечто даже не объявленное в качестве открытого свойства вашего класса, а также скрыть свойства, которые вы не хотите показывать коду, не имеющему явной информации о типе для вашего объекта. Так делается в DataView Для экспонирования коллекций дочерних строк в какой-то другой таблице, которые определяются через DataRelation В качестве свойства DataView Для дочерней коллекции. Интерфейс ICustomTypeDesctriptor Не принадлежит к числу тех, что вы должны были бы обычно реализовать. Но если вам нужен явный контроль над тем, какие свойства экспонируются посредством класса TypeDescriptor При рефлексии вашего объектного типа, то реализация этого интерфейса дает вам такую возможность. Когда класс TypeDescriptor Собирается получить свойства, реализуемые объектом, он прежде всего проверяет, реализует ли этот объект интерфейс ICustomTypeDesctriptor. Если да, то он попросит объект предоставить свои собственные дескрипторы свойств через метод GetProperties Этого интерфейса. На самом деле функции интерфейса ICustomTypeDesctriptor Далеко не ограничиваются тем, чтобы просто дать вам возможность описать свои свойства. Если вы реализуете ICustomTypeDesctriptor, То должны предусмотреть реализации для всех методов, показанных в таблице 7.16, большинство из которых не будет непосредственно участвовать в сценариях привязки данных.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *