Compartilhar via


TypeConverter Classe

Definição

Fornece uma maneira unificada de converter tipos de valores em outros tipos, bem como para acessar valores padrão e subpropriedades.

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
Herança
TypeConverter
Derivado
Atributos

Exemplos

O exemplo de código a seguir mostra como criar uma instância de um conversor de tipo e associá-la a uma classe. A classe que implementa o conversor, MyClassConverter, deve herdar da classe 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

Quando você tiver uma propriedade que tenha uma enumeração, verifique se um valor de enumeração é válido antes de definir a propriedade. O próximo exemplo de código requer que uma enumeração chamada MyPropertyEnum tenha sido declarada.

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

Outro uso comum do conversor de tipo é converter um objeto em uma cadeia de caracteres. O exemplo de código a seguir imprime o nome do Color armazenado na variável 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))

Você também pode usar um conversor de tipo para converter um valor de seu nome, conforme mostrado no próximo exemplo de código.

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)

No exemplo de código a seguir, você pode usar um conversor de tipo para imprimir o conjunto de valores padrão aos quais o objeto dá suporte.

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

Comentários

O tipo mais comum de conversor é aquele que converte de e para uma representação de texto. O conversor de tipo de uma classe está associado à classe com um TypeConverterAttribute. A menos que esse atributo seja substituído, todas as classes que herdam dessa classe usam o mesmo conversor de tipo que a classe base.

Nota

Para fins gerais do sistema de tipos, não acesse diretamente um conversor de tipo. Em vez disso, acesse o conversor apropriado usando TypeDescriptor. Para obter mais informações, consulte os exemplos de código fornecidos.

No entanto, ao usar XAML, um processador XAML pesquisa o TypeConverterAttribute diretamente, em vez de passar por TypeDescriptor. Para casos em que você deseja uma instância TypeDescriptor do código ou onde você cria uma instância compartilhada em recursos do WPF, é aceitável construí-la diretamente sem referenciar TypeDescriptor ou outro suporte do sistema de reflexão e tipo.

Classes derivadas de TypeConverter geralmente são referenciadas como parte de como um processador XAML converte um valor de texto de atributo ou inicialização de marcação (que é inerentemente uma cadeia de caracteres) e gera um objeto para uma representação em tempo de execução. Autores de tipo personalizado que pretendem dar suporte a um comportamento de conversão de tipo para XAML normalmente implementam uma classe TypeConverter que dá suporte a seu próprio comportamento de ConvertFrom exclusivo de uma cadeia de caracteres. Esse comportamento permite a conversão de tipo da cadeia de caracteres fornecida como um valor de atributo XAML e fornece um processador XAML com o suporte necessário para criar um objeto a partir da cadeia de caracteres, para que o objeto possa ser produzido em um grafo de objeto analisado. Tipos personalizados ou membros de tipos personalizados são indicados aplicando TypeConverterAttribute às definições, com o atributo fazendo referência à implementação de TypeConverter personalizada. Para obter mais informações, consulte Type Converters for XAML Overview.

Notas aos Herdeiros

Herda de TypeConverter para implementar seus próprios requisitos de conversão. Ao herdar dessa classe, você pode substituir os seguintes métodos:

Observação: seu tipo derivado pode ser marcado como internal ou private, mas uma instância do seu tipo pode ser criada com a classe TypeDescriptor. Não escreva código inseguro supondo que o chamador seja confiável. Suponha, em vez disso, que os chamadores possam criar instâncias do seu tipo em confiança parcial.

Para obter mais informações sobre conversores de tipo para fins gerais (não XAML), consulte How to: Implement a Type Converter or Generalized Type Conversion.

Construtores

TypeConverter()

Inicializa uma nova instância da classe TypeConverter.

Métodos

CanConvertFrom(ITypeDescriptorContext, Type)

Retorna se esse conversor pode converter um objeto do tipo fornecido para o tipo desse conversor usando o contexto especificado.

CanConvertFrom(Type)

Retorna se esse conversor pode converter um objeto do tipo fornecido no tipo desse conversor.

CanConvertTo(ITypeDescriptorContext, Type)

Retorna se esse conversor pode converter o objeto no tipo especificado, usando o contexto especificado.

CanConvertTo(Type)

Retorna se esse conversor pode converter o objeto no tipo especificado.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Converte o objeto fornecido no tipo desse conversor, usando as informações de contexto e cultura especificadas.

ConvertFrom(Object)

Converte o valor fornecido no tipo desse conversor.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Converte a cadeia de caracteres fornecida no tipo desse conversor, usando a cultura invariável e o contexto especificado.

ConvertFromInvariantString(String)

Converte a cadeia de caracteres fornecida no tipo desse conversor, usando a cultura invariável.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Converte o texto fornecido em um objeto, usando as informações de contexto e cultura especificadas.

ConvertFromString(ITypeDescriptorContext, String)

Converte o texto fornecido em um objeto usando o contexto especificado.

ConvertFromString(String)

Converte o texto especificado em um objeto.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Converte o objeto de valor fornecido no tipo especificado, usando as informações de contexto e cultura especificadas.

ConvertTo(Object, Type)

Converte o objeto de valor fornecido no tipo especificado, usando os argumentos.

ConvertToInvariantString(ITypeDescriptorContext, Object)

Converte o valor especificado em uma representação de cadeia de caracteres invariável de cultura usando o contexto especificado.

ConvertToInvariantString(Object)

Converte o valor especificado em uma representação de cadeia de caracteres invariável por cultura.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Converte o valor fornecido em uma representação de cadeia de caracteres usando as informações de contexto e cultura especificadas.

ConvertToString(ITypeDescriptorContext, Object)

Converte o valor fornecido em uma representação de cadeia de caracteres usando o contexto fornecido.

ConvertToString(Object)

Converte o valor especificado em uma representação de cadeia de caracteres.

CreateInstance(IDictionary)

Recria um Object dado um conjunto de valores de propriedade para o objeto.

CreateInstance(ITypeDescriptorContext, IDictionary)

Cria uma instância do tipo ao qual esse TypeConverter está associado, usando o contexto especificado, dado um conjunto de valores de propriedade para o objeto.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetConvertFromException(Object)

Retorna uma exceção a ser gerada quando uma conversão não pode ser executada.

GetConvertToException(Object, Type)

Retorna uma exceção a ser gerada quando uma conversão não pode ser executada.

GetCreateInstanceSupported()

Retorna se alterar um valor nesse objeto requer uma chamada para o método CreateInstance(IDictionary) para criar um novo valor.

GetCreateInstanceSupported(ITypeDescriptorContext)

Retorna se alterar um valor nesse objeto requer uma chamada para CreateInstance(IDictionary) para criar um novo valor, usando o contexto especificado.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

Retorna uma coleção de propriedades para o tipo de matriz especificado pelo parâmetro de valor, usando o contexto e os atributos especificados.

GetProperties(ITypeDescriptorContext, Object)

Retorna uma coleção de propriedades para o tipo de matriz especificado pelo parâmetro de valor, usando o contexto especificado.

GetProperties(Object)

Retorna uma coleção de propriedades para o tipo de matriz especificado pelo parâmetro de valor.

GetPropertiesSupported()

Retorna se esse objeto dá suporte a propriedades.

GetPropertiesSupported(ITypeDescriptorContext)

Retorna se esse objeto dá suporte a propriedades, usando o contexto especificado.

GetStandardValues()

Retorna uma coleção de valores padrão do contexto padrão para o tipo de dados para o qual esse conversor de tipo foi projetado.

GetStandardValues(ITypeDescriptorContext)

Retorna uma coleção de valores padrão para o tipo de dados para o qual esse conversor de tipo foi projetado quando fornecido com um contexto de formato.

GetStandardValuesExclusive()

Retorna se a coleção de valores padrão retornados de GetStandardValues() é uma lista exclusiva.

GetStandardValuesExclusive(ITypeDescriptorContext)

Retorna se a coleção de valores padrão retornados de GetStandardValues() é uma lista exclusiva de valores possíveis, usando o contexto especificado.

GetStandardValuesSupported()

Retorna se esse objeto dá suporte a um conjunto padrão de valores que podem ser escolhidos em uma lista.

GetStandardValuesSupported(ITypeDescriptorContext)

Retorna se esse objeto dá suporte a um conjunto padrão de valores que podem ser escolhidos em uma lista, usando o contexto especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsValid(ITypeDescriptorContext, Object)

Retorna se o objeto de valor fornecido é válido para esse tipo e para o contexto especificado.

IsValid(Object)

Retorna se o objeto de valor fornecido é válido para esse tipo.

MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
SortProperties(PropertyDescriptorCollection, String[])

Classifica uma coleção de propriedades.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também