Получение конвертера для типа - PullRequest
12 голосов
/ 16 сентября 2010

В MSDN я читал об этом EnumConverter :

Вы никогда не должны создавать экземпляр EnumConverter.Вместо этого вызовите метод GetConverter класса TypeDescriptor.Для получения дополнительной информации см. Примеры в базовом классе TypeConverter.

Кто-нибудь знает почему и верно ли это для моих собственных реализованных преобразователей?

Например, у меня есть класс GradientColor иКонвертер GradientColorConverter.Должен ли я написать

new GradientColorConverter().ConvertFrom(colorString) 

или

TypeDescriptor.GetConverter(typeof(GradientColor)).ConvertFrom(colorString);

На самом деле это работает в обоих направлениях, но что лучше?

Ответы [ 2 ]

17 голосов
/ 16 сентября 2010

Я думаю, что последний TypeDescriptor.GetConverter(typeof(GradientColor)), поскольку он позволяет другим преобразователям добавлять или расширять систему преобразователей типов, когда код запускается в другом контексте (например, пользовательский элемент управления запускается в другом приложении со своими собственными пользовательскими преобразователями типов).

2 голосов
/ 16 сентября 2010

Последний.Если вы измените класс преобразователя типов, ваш код все равно будет работать.Разделение это хорошо.

...