Обобщенное преобразование типов

Для преобразования определенных пользователем типов данных (настраиваемых типов) в другие типы данных платформа .NET Framework предоставляет два указанных ниже способа:

  • определение преобразователя типов для настраиваемого типа путем расширения класса TypeConverter и сопоставления преобразователя с типом через атрибут TypeConverterAttribute;

  • реализация интерфейса IConvertible для настраиваемого типа.

Различия между этими двумя механизмами представлены в следующей таблице.

Примечание

Поддержка во время разработки может быть предоставлена для настраиваемого типа лишь при условии, что для него определен преобразователь типа.

Преобразование с использованием TypeConverter

Преобразование с использованием IConvertible

Может использоваться как во время разработки, так и во время выполнения.

Может использоваться только во время выполнения.

Использует отражение, поэтому выполняется медленнее преобразования, использующего IConvertible.

Не использует отражения.

Обеспечивает двустороннее преобразование настраиваемого типа в другие типы данных и наоборот. Например, TypeConverter, определенный для типа MyType, позволяет осуществлять преобразования из MyType в String и из String в MyType.

Обеспечивает преобразование из настраиваемого типа в другие типы данных, но не наоборот.

ПримечаниеПримечание

TypeConverter типа реализуется вне типа и сопоставляется с ним с помощью атрибута TypeConverterAttribute.

ПримечаниеПримечание

IConvertible реализуется настраиваемым типом.Для преобразования типа пользователь должен вызвать для этого типа метод преобразования (контракта интерфейса IConvertible).

Подробные сведения о выполнении преобразований с помощью преобразователей типов см. в разделе TypeConverter. Сведения о реализации преобразователя типов с целью предоставления поддержки во время разработки для пользовательского типа см. в разделе Реализация преобразователя типов.

См. также

Задачи

Практическое руководство. Реализация преобразователя типов

Другие ресурсы

Расширение поддержки времени разработки