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 преобразует значение атрибута или текста инициализации из разметки (которая по сути является строкой) и создает объект для представления во время выполнения. Авторы пользовательских типов, которые намерены поддерживать поведение преобразования типов для XAML, обычно реализуют TypeConverter класс, поддерживающий их собственное уникальное ConvertFrom поведение из строки. Это поведение позволяет преобразовать тип из строки, указанной в качестве значения атрибута XAML, и предоставляет обработчику XAML поддержку, необходимую для создания объекта из строки, чтобы объект можно было создать в проанализированном графе объекта. Настраиваемые типы или члены пользовательских типов указываются путем применения TypeConverterAttribute к определениям, при этом атрибут ссылается на пользовательскую TypeConverter реализацию. Дополнительные сведения см. в статье Общие сведения о преобразователях типов для XAML.

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

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

Примечание. Производный тип может быть помечен как 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)

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

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