Compartilhar via


TypeConverter Classe

Definição

Fornece uma maneira unificada de converter tipos de valores em outros tipos, bem como 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 TypeConverter classe .

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 de conversor mais comum é aquele que converte de e para uma representação de texto. O conversor de tipo de uma classe é vinculado à classe com um TypeConverterAttribute. A menos que esse atributo seja substituído, todas as classes que herdam dessa classe usarão o mesmo conversor de tipo que a classe base.

Observação

Para fins gerais do sistema de tipo, não acesse um conversor de tipo diretamente. 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 TypeDescriptor instância do código ou onde você cria uma instância compartilhada em recursos do WPF, é aceitável construí-la diretamente sem referenciar TypeDescriptor ou outra reflexão e tipo de suporte do sistema.

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 TypeConverter classe que dá suporte a seu próprio comportamento exclusivo ConvertFrom 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-se TypeConverterAttribute às definições, com o atributo referenciando a implementação personalizada TypeConverter . Para obter mais informações, consulte Conversores de tipo para visão geral de XAML.

Notas aos Herdeiros

Herde 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 tipo pode ser criada com a TypeDescriptor classe . 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 Como implementar um conversor de tipo ou conversão de tipo generalizado.

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 especificado no tipo desse conversor, usando o contexto especificado.

CanConvertFrom(Type)

Retorna se este conversor pode converter um objeto do tipo indicado para o tipo deste conversor.

CanConvertTo(ITypeDescriptorContext, Type)

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

CanConvertTo(Type)

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

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Converte o objeto determinado para o tipo deste conversor, usando o contexto especificado e as informações da cultura.

ConvertFrom(Object)

Converte o valor fornecido noo tipo deste conversor.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Converte a cadeia de caracteres fornecida para o tipo deste conversor usando a cultura invariável e o contexto especificado.

ConvertFromInvariantString(String)

Converte a cadeia de caracteres fornecida para o tipo deste conversor usando a cultura invariável.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Converte o texto fornecido em um objeto, usando o contexto e a informação de cultura especificados.

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 determinado para o tipo especificado, usando o contexto especificado e as informações da cultura.

ConvertTo(Object, Type)

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

ConvertToInvariantString(ITypeDescriptorContext, Object)

Converte o valor especificado em uma representação de cadeia de caracteres que não varia de acordo com a cultura, usando o contexto especificado.

ConvertToInvariantString(Object)

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

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

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

ConvertToString(ITypeDescriptorContext, Object)

Converte o valor especificado 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 do 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 puder ser executada.

GetConvertToException(Object, Type)

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

GetCreateInstanceSupported()

Retorna se a alteração de um valor neste objeto requer uma chamada ao método CreateInstance(IDictionary) para criar um novo valor.

GetCreateInstanceSupported(ITypeDescriptorContext)

Retorna se a alteração de um valor neste 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)

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

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(Object)

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

GetPropertiesSupported()

Retorna se este objeto dá suporte a propriedades.

GetPropertiesSupported(ITypeDescriptorContext)

Retorna se este objeto é compatível com as 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 criado.

GetStandardValues(ITypeDescriptorContext)

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

GetStandardValuesExclusive()

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

GetStandardValuesExclusive(ITypeDescriptorContext)

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

GetStandardValuesSupported()

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

GetStandardValuesSupported(ITypeDescriptorContext)

Retorna se o objeto dá suporte a um conjunto de valores padrão que podem ser escolhidos de 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 especificado é válido para esse tipo.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(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