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 , чтобы реализовать собственные требования к преобразованию. При наследовании от этого класса можно переопределить следующие методы. — Для поддержки преобразования пользовательских типов Переопределите 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)

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

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