TypeConverter Класс

Определение

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

public ref class TypeConverter
public class TypeConverter
[System.Runtime.InteropServices.ComVisible(true)]
public class TypeConverter
type TypeConverter = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeConverter = class
Public Class TypeConverter
Наследование
TypeConverter
Производный
Атрибуты

Примеры

В следующем примере кода показано, как создать экземпляр преобразователя типов и привязать его к классу. Класс, реализуя преобразователь, MyClassConverterдолжен наследоваться от TypeConverter класса.

public:
   [TypeConverter(Sample::MyClassConverter::typeid)]
   ref class MyClass
   {
      // Insert code here.
   };
[TypeConverter(typeof(MyClassConverter))]
 public class MyClass {
    // Insert code here.
}
<TypeConverter(GetType(MyClassConverter))> _
Public Class Class1
    ' Insert code here.
End Class

Если у вас есть свойство с перечислением, проверьте, является ли значение перечисления допустимым перед заданием свойства. В следующем примере кода требуется, чтобы был объявлен вызов MyPropertyEnum перечисления.

public:
   property MyPropertyEnum MyProperty 
   {
      void set( MyPropertyEnum value )
      {
         // Checks to see if the value passed is valid.
         if ( !TypeDescriptor::GetConverter( MyPropertyEnum::typeid )->IsValid( value ) )
         {
            throw gcnew ArgumentException;
         }
         // The value is valid. Insert code to set the property.
      }
   }
public MyPropertyEnum MyProperty {
    set {
       // Checks to see if the value passed is valid.
       if (!TypeDescriptor.GetConverter(typeof(MyPropertyEnum)).IsValid(value)) {
          throw new ArgumentException();
       }
       // The value is valid. Insert code to set the property.
    }
 }

Public WriteOnly Property MyProperty() As MyPropertyEnum
    Set
        ' Checks to see if the value passed is valid.
        If Not TypeDescriptor.GetConverter(GetType(MyPropertyEnum)).IsValid(value) Then
            Throw New ArgumentException()
        End If
        ' The value is valid. Insert code to set the property.
    End Set 
End Property

Другое распространенное использование преобразователя типов заключается в преобразовании объекта в строку. В следующем примере кода выводится имя Color хранящегося в переменной c.

Color c = Color::Red;
Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(typeof(Color)).ConvertToString(c));
Dim c As Color = Color.Red
Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))

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

Color c =  (Color)(TypeDescriptor::GetConverter( Color::typeid )->ConvertFromString( "Red" ));
Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString("Red");
Dim c As Color = CType(TypeDescriptor.GetConverter(GetType(Color)).ConvertFromString("Red"), Color)

В следующем примере кода можно использовать преобразователь типов для вывода набора стандартных значений, поддерживаемых объектом.

for each ( Color c in TypeDescriptor::GetConverter( Color::typeid )->GetStandardValues() )
{
   Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
}
foreach(Color c in TypeDescriptor.GetConverter(typeof(Color)).GetStandardValues()) {
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c));
 }
Dim c As Color
For Each c In  TypeDescriptor.GetConverter(GetType(Color)).GetStandardValues()
    Console.WriteLine(TypeDescriptor.GetConverter(c).ConvertToString(c))
Next c

Комментарии

Самый распространенный тип преобразователя — тот, который преобразует в текстовое представление и из него. Преобразователь типов для класса привязывается к классу с помощью TypeConverterAttribute. Если этот атрибут не переопределен, все классы, наследующие от этого класса, используют тот же преобразователь типов, что и базовый класс.

Примечание

В общих целях системы типов не обращаются к преобразователю типов напрямую. Вместо этого получите доступ к соответствующему преобразователю с помощью TypeDescriptor. Дополнительные сведения см. в приведенных примерах кода.

Однако при использовании XAML обработчик XAML выполняет поиск TypeConverterAttribute непосредственно, а не проходит.TypeDescriptor В случаях, когда требуется TypeDescriptor экземпляр из кода или где создается общий экземпляр в ресурсах WPF, его можно создать напрямую без ссылки TypeDescriptor или другой поддержки системы отражения и типов.

Классы, производные от TypeConverter них, часто ссылаются в рамках преобразования атрибута или текстового значения инициализации из разметки (которая является строкой) и создает объект для представления во время выполнения. Авторы пользовательских типов, которые намерены поддерживать поведение преобразования типов для XAML, обычно реализуют TypeConverter класс, поддерживающий собственное уникальное ConvertFrom поведение из строки. Такое поведение позволяет преобразовать тип из строки, предоставленной в виде значения атрибута XAML, и предоставляет обработчику XAML поддержку, необходимую для создания объекта из строки, чтобы объект можно было создать в графе проанализированных объектов. Пользовательские типы или члены пользовательских типов указываются путем применения TypeConverterAttribute к определениям с атрибутом, ссылающимся на пользовательскую TypeConverter реализацию. Дополнительные сведения см. в разделе "Общие сведения о преобразователях типов" для XAML.

Примечания для тех, кто наследует этот метод

Наследуйте от TypeConverter реализации собственных требований преобразования. При наследовании от этого класса можно переопределить следующие методы: — Для поддержки преобразования пользовательских типов переопределите CanConvertFrom(ITypeDescriptorContext, Type)методы , CanConvertTo(ITypeDescriptorContext, Type)ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)и ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) методы.

— Чтобы преобразовать типы, которые должны повторно создать объект для изменения его значения, переопределите CreateInstance(ITypeDescriptorContext, IDictionary) методы и GetCreateInstanceSupported(ITypeDescriptorContext) методы.

— Чтобы преобразовать типы, поддерживающие свойства, переопределите GetProperties(ITypeDescriptorContext, Object, Attribute[]) методы и GetPropertiesSupported(ITypeDescriptorContext) методы. Если преобразуемый класс не имеет свойств и необходимо реализовать свойства, можно использовать TypeConverter.SimplePropertyDescriptor класс в качестве основы для реализации дескрипторов свойств. При наследовании от TypeConverter.SimplePropertyDescriptor, необходимо переопределить GetValue(Object) методы и SetValue(Object, Object) методы.

— Для преобразования типов, поддерживающих стандартные значения, переопределите GetStandardValues(ITypeDescriptorContext)GetStandardValuesExclusive(ITypeDescriptorContext)GetStandardValuesSupported(ITypeDescriptorContext) и IsValid(ITypeDescriptorContext, Object) методы.

Примечание. Производный тип может быть помечен как internal или private, но экземпляр типа можно создать с TypeDescriptor помощью класса. Не записывайте небезопасный код, предполагая, что вызывающий объект является доверенным. Предположим, что вызывающие объекты могут создавать экземпляры типа в частичном доверии.

Дополнительные сведения о преобразователях типов для общих целей (не XAML) см. в разделе "Практическое руководство. Реализация преобразователя типов " или "Обобщенное преобразование типов".

Конструкторы

TypeConverter()

Инициализирует новый экземпляр класса TypeConverter.

Методы

CanConvertFrom(ITypeDescriptorContext, Type)

Возвращает значение, указывающее, может ли этот преобразователь выполнить преобразование объекта заданного типа в тип этого преобразователя, используя заданный контекст.

CanConvertFrom(Type)

Возвращает значение, указывающее, может ли этот преобразователь преобразовать объект заданного типа к типу этого преобразователя.

CanConvertTo(ITypeDescriptorContext, Type)

Возвращает значение, показывающее, может ли этот преобразователь преобразовать объект в заданный тип с помощью указанного контекста.

CanConvertTo(Type)

Возвращает значение, указывающее, может ли этот преобразователь выполнить преобразование данного объекта к заданному типу.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Преобразует заданный объект в тип данного преобразователя с использованием указанного контекста и сведений о культуре.

ConvertFrom(Object)

Приводит заданное значение к типу этого преобразователя.

ConvertFromInvariantString(ITypeDescriptorContext, String)

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

ConvertFromInvariantString(String)

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

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

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

ConvertFromString(ITypeDescriptorContext, String)

Преобразует заданный текст в объект, используя заданный контекст.

ConvertFromString(String)

Преобразует заданный текст в объект.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

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

ConvertTo(Object, Type)

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

ConvertToInvariantString(ITypeDescriptorContext, Object)

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

ConvertToInvariantString(Object)

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

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

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

ConvertToString(ITypeDescriptorContext, Object)

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

ConvertToString(Object)

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

CreateInstance(IDictionary)

Повторно создает объект Object, задающий набор значений свойств для объекта.

CreateInstance(ITypeDescriptorContext, IDictionary)

Создает экземпляр типа, с которым связан этот TypeConverter, используя заданный контекст с учетом набора значений свойств для объекта.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetConvertFromException(Object)

Возвращает исключение, возникающее в случае, если невозможно выполнить преобразование.

GetConvertToException(Object, Type)

Возвращает исключение, возникающее в случае, если невозможно выполнить преобразование.

GetCreateInstanceSupported()

Возвращает значение, показывающее, требуется ли при изменении значения этого объекта вызывать метод CreateInstance(IDictionary), чтобы создать новое значение.

GetCreateInstanceSupported(ITypeDescriptorContext)

Возвращает значение, указывающее, требуется ли для изменения значения в этом объекте вызов CreateInstance(IDictionary), чтобы создать новое значение с помощью указанного контекста.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetProperties(ITypeDescriptorContext, Object)

Возвращает коллекцию свойств для типа массива, заданного параметром, используя заданный контекст.

GetProperties(ITypeDescriptorContext, Object, Attribute[])

Возвращает коллекцию свойств для типа массива, заданного параметром value, используя заданные контекст и атрибуты.

GetProperties(Object)

Возвращает коллекцию свойств для типа массива, заданного параметром значения.

GetPropertiesSupported()

Возвращает значение, показывающее, поддерживаются ли свойства этим объектом.

GetPropertiesSupported(ITypeDescriptorContext)

Возвращает значение, показывающее, поддерживает ли данный объект свойства, используя заданный контекст.

GetStandardValues()

Возвращает коллекцию стандартных значений из контекста по умолчанию для типа данных, для которого предназначен этот преобразователь типов.

GetStandardValues(ITypeDescriptorContext)

Возвращает коллекцию стандартных значений для типа данных, для которого предназначен этот преобразователь типов при предоставлении с контекстом формата.

GetStandardValuesExclusive()

Возвращает значение, показывающее, является ли исчерпывающим списком коллекция стандартных значений, возвращаемая методом GetStandardValues().

GetStandardValuesExclusive(ITypeDescriptorContext)

Используя заданный контекст, возвращает значение, показывающее, является ли исчерпывающим списком возможных значений коллекция стандартных значений, возвращаемая методом GetStandardValues().

GetStandardValuesSupported()

Возвращает значение, показывающее, поддерживает ли объект стандартный набор значений, которые можно выбрать из списка.

GetStandardValuesSupported(ITypeDescriptorContext)

Получает значение, показывающее, поддерживает ли этот объект стандартный набор значений, которые можно выбрать из списка, используя заданную контекстную информацию.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsValid(ITypeDescriptorContext, Object)

Возвращает значение, показывающее, допустим ли для этого типа и указанного контекста данный объект значения.

IsValid(Object)

Возвращает значение, показывающее, допустим ли для этого типа данный объект значения.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
SortProperties(PropertyDescriptorCollection, String[])

Сортирует коллекцию свойств.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел