Поделиться через


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($"{nameof(MyProperty)} is not valid");
        }
        // 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)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 реализации собственных требований преобразования. При наследовании от этого класса можно переопределить следующие методы:

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

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

Имя Описание
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, Attribute[])

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

GetProperties(ITypeDescriptorContext, Object)

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

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)

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

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