TypeConverter Classe

Definição

Proporciona uma forma unificada de converter tipos de valores para outros tipos, bem como de aceder a valores e subpropriedades padrão.

public ref class TypeConverter
[System.Runtime.InteropServices.ComVisible(true)]
public class TypeConverter
public class TypeConverter
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeConverter = class
type TypeConverter = class
Public Class TypeConverter
Herança
TypeConverter
Derivado
Atributos

Exemplos

O exemplo de código seguinte mostra como criar uma instância de um conversor de tipos 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 tem uma propriedade que tem uma enumeração, verifique se um valor de enumeração é válido antes de definir a propriedade. O próximo exemplo de código exige 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($"{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

Outro uso comum de conversores de tipos é converter um objeto numa cadeia. O seguinte exemplo de código 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))

Também pode usar um conversor de tipos para converter um valor do seu nome, como mostrado no próximo exemplo de código.

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)

No exemplo de código seguinte, pode usar um conversor de tipos para imprimir o conjunto de valores padrão que o objeto suporta.

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

Observações

O tipo mais comum de conversor é aquele que converte de e para uma representação de texto. O conversor de tipo para uma classe está associado a ela através de 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.

Note

Para fins gerais de sistemas de tipos, não acedas diretamente a um conversor de tipos. Em vez disso, acede ao conversor apropriado usando TypeDescriptor. Para mais informações, consulte os exemplos de código fornecidos.

No entanto, ao usar XAML, um processador XAML procura o TypeConverterAttribute diretamente, em vez de passar por TypeDescriptor. Para casos em que pretende uma instância TypeDescriptor a partir do código, ou onde cria uma instância partilhada em recursos WPF, é aceitável construí-la diretamente sem referenciar TypeDescriptor ou outro suporte para sistemas de reflexão e tipos.

As classes derivadas de TypeConverter são frequentemente referenciadas como parte de como um processador XAML converte um atributo ou valor de texto de inicialização a partir de uma marcação (que é inerentemente uma cadeia) e gera um objeto para uma representação em tempo de execução. Autores de tipos personalizados que pretendem suportar um comportamento de conversão de tipos para XAML normalmente implementam uma TypeConverter classe que suporta o seu próprio comportamento único ConvertFrom a partir de uma cadeia. Este comportamento permite a conversão de tipos a partir da string fornecida como valor de atributo XAML e fornece a um processador XAML o suporte necessário para criar um objeto a partir da string, de modo a que o objeto possa ser produzido num grafo de objetos analisado. Os tipos personalizados ou membros dos tipos personalizados são indicados aplicando TypeConverterAttribute às definições, com o atributo a referenciar a implementação personalizada TypeConverter . Para mais informações, consulte Conversores de Tipos para Visão Geral XAML.

Notas para Herdeiros

Herde para TypeConverter implementar os seus próprios requisitos de conversão. Quando herdas desta classe, podes sobrepor os seguintes métodos:

Nota: O seu tipo derivado pode estar marcado como internal ou private, mas uma instância do seu tipo pode ser criada com a TypeDescriptor classe. Não escreva código inseguro assumindo que o chamador é confiável. Assuma, em vez disso, que os chamadores podem criar instâncias do seu tipo em confiança parcial.

Para mais informações sobre conversores de tipos para fins gerais (não XAML), veja Como: Implementar um Conversor de Tipos ou Conversão de Tipos Generalizada.

Construtores

Name Description
TypeConverter()

Inicializa uma nova instância da TypeConverter classe.

Métodos

Name Description
CanConvertFrom(ITypeDescriptorContext, Type)

Devolve se este conversor pode converter um objeto do tipo dado para o tipo deste conversor, usando o contexto especificado.

CanConvertFrom(Type)

Devolve se este conversor pode converter um objeto do tipo dado para o tipo deste conversor.

CanConvertTo(ITypeDescriptorContext, Type)

Devolve se este conversor pode converter o objeto para o tipo especificado, usando o contexto especificado.

CanConvertTo(Type)

Devolve se este conversor pode converter o objeto para o tipo especificado.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Converte o objeto dado para o tipo deste conversor, usando o contexto especificado e a informação de cultura.

ConvertFrom(Object)

Converte o valor dado para o tipo deste conversor.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Converte a cadeia dada para o tipo deste conversor, usando a cultura invariante e o contexto especificado.

ConvertFromInvariantString(String)

Converte a cadeia dada para o tipo deste conversor, usando a cultura invariante.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Converte o texto dado num objeto, usando a informação específica de contexto e cultura.

ConvertFromString(ITypeDescriptorContext, String)

Converte o texto dado num objeto, usando o contexto especificado.

ConvertFromString(String)

Converte o texto especificado num objeto.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Converte o objeto de valor dado para o tipo especificado, usando o contexto e a informação de cultura especificados.

ConvertTo(Object, Type)

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

ConvertToInvariantString(ITypeDescriptorContext, Object)

Converte o valor especificado para uma representação de cordas invariante à cultura, usando o contexto especificado.

ConvertToInvariantString(Object)

Converte o valor especificado para uma representação de cordas invariante à cultura.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Converte o valor dado numa representação de cadeia, usando a informação específica de contexto e cultura.

ConvertToString(ITypeDescriptorContext, Object)

Converte o valor dado numa representação de cadeia, usando o contexto dado.

ConvertToString(Object)

Converte o valor especificado numa representação de cadeia.

CreateInstance(IDictionary)

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

CreateInstance(ITypeDescriptorContext, IDictionary)

Cria uma instância do tipo a que isto 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)

Devolve uma exceção ao lançamento quando uma conversão não pode ser realizada.

GetConvertToException(Object, Type)

Devolve uma exceção ao lançamento quando uma conversão não pode ser realizada.

GetCreateInstanceSupported()

Devolve se alterar um valor neste objeto requer uma chamada ao CreateInstance(IDictionary) método para criar um novo valor.

GetCreateInstanceSupported(ITypeDescriptorContext)

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

GetHashCode()

Serve como função de hash predefinida.

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

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

GetProperties(ITypeDescriptorContext, Object)

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

GetProperties(Object)

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

GetPropertiesSupported()

Devolve se este objeto suporta propriedades.

GetPropertiesSupported(ITypeDescriptorContext)

Devolve se este objeto suporta propriedades, usando o contexto especificado.

GetStandardValues()

Devolve uma coleção de valores padrão do contexto padrão para o tipo de dado para o qual este conversor de tipo foi concebido.

GetStandardValues(ITypeDescriptorContext)

Devolve uma coleção de valores padrão para o tipo de dado para o qual este conversor de tipo foi concebido quando fornecido com um contexto de formato.

GetStandardValuesExclusive()

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

GetStandardValuesExclusive(ITypeDescriptorContext)

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

GetStandardValuesSupported()

Devolve se este objeto suporta um conjunto padrão de valores que podem ser escolhidos de uma lista.

GetStandardValuesSupported(ITypeDescriptorContext)

Devolve se este objeto suporta um conjunto padrão de valores 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)

Devolve se o objeto de valor dado é válido para este tipo e para o contexto especificado.

IsValid(Object)

Devolve se o objeto de valor dado é válido para este tipo.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

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

Ordena um conjunto de propriedades.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também