TypeConverter Classe

Definição

Fornece uma maneira unificada de converter tipos de valores em outros tipos, bem como acessar valores padrão e subpropriedades.Provides a unified way of converting types of values to other types, as well as for accessing standard values and subproperties.

public ref class TypeConverter
[System.Runtime.InteropServices.ComVisible(true)]
public class TypeConverter
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.The following code example shows how to create an instance of a type converter and bind it to a class. A classe que implementa o conversor, MyClassConverter, deve herdar da classe TypeConverter.The class implementing the converter, MyClassConverter, must inherit from the TypeConverter class.

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.When you have a property that has an enumeration, check to see whether an enumeration value is valid before setting the property. O próximo exemplo de código requer que uma enumeração chamada MyPropertyEnum tenha sido declarada.The next code example requires that an enumeration called MyPropertyEnum has been declared.

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 do conversor de tipo comum é converter um objeto em uma cadeia de caracteres.Another common type converter usage is to convert an object to a string. O exemplo de código a seguir imprime o nome do Color armazenado na variável c.The following code example prints out the name of the Color stored in the variable c.

Color c = Color::Red;
Console::WriteLine( TypeDescriptor::GetConverter( c )->ConvertToString( c ) );
Color c = Color.Red;
    Console.WriteLine(TypeDescriptor.GetConverter(c).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.You can also use a type converter to convert a value from its name, as shown in the next code example.

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 que o objeto dá suporte.In the following code example, you can use a type converter to print out the set of standard values that the object supports.

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.The most common type of converter is one that converts to and from a text representation. O conversor de tipo para uma classe é associado à classe com um TypeConverterAttribute.The type converter for a class is bound to the class with a 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.Unless this attribute is overridden, all classes that inherit from this class use the same type converter as the base class.

Observação

Para fins gerais do sistema de tipos, não acesse um conversor de tipo diretamente.For general type system purposes, do not access a type converter directly. Em vez disso, acesse o conversor apropriado usando TypeDescriptor.Instead, access the appropriate converter by using TypeDescriptor. Para obter mais informações, consulte os exemplos de código fornecidos.For more information, see the code examples provided.

No entanto, ao usar o XAML, um processador XAML procura o TypeConverterAttribute diretamente, em vez de passar por TypeDescriptor.However, when using XAML, a XAML processor searches for the TypeConverterAttribute directly, instead of going through TypeDescriptor. Para casos em que você deseja uma instância de TypeDescriptor do código, ou onde você cria uma instância compartilhada em recursos do WPF, é aceitável construí-la diretamente sem fazer referência TypeDescriptor ou outro suporte ao sistema de reflexão e tipo.For cases where you do want a TypeDescriptor instance from code, or where you create a shared instance in WPF resources, it is acceptable to construct it directly without referencing TypeDescriptor or other reflection and type system support.

Classes derivadas de TypeConverter geralmente são referenciadas como parte de como um processador XAML converte um atributo ou um valor de texto de inicialização de marcação (que é inerentemente uma cadeia de caracteres) e gera um objeto para uma representação em tempo de execução.Classes derived from TypeConverter are often referenced as part of how a XAML processor converts an attribute or initialization text value from markup (which is inherently a string) and generates an object for a run-time representation. Os 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.Custom type authors that intend to support a type conversion behavior for XAML typically implement a TypeConverter class that supports their own unique ConvertFrom behavior from a string. Esse comportamento habilita 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, de modo que o objeto possa ser produzido em um grafo de objeto analisado.This behavior enables type conversion from the string provided as a XAML attribute value and provides a XAML processor with the support needed to create an object from the string, so that the object can be produced in a parsed object graph. Tipos personalizados ou membros de tipos personalizados são indicados pela aplicação de TypeConverterAttribute às definições, com o atributo que faz referência à implementação de TypeConverter personalizada.Custom types or members of custom types are indicated by applying TypeConverterAttribute to the definitions, with the attribute referencing the custom TypeConverter implementation. Para obter mais informações, consulte conversores de tipo para visão geral de XAML.For more information, see Type Converters for XAML Overview.

Notas aos Herdeiros

Herdar de TypeConverter para implementar seus próprios requisitos de conversão.Inherit from TypeConverter to implement your own conversion requirements. Ao herdar dessa classe, você pode substituir os seguintes métodos:When you inherit from this class, you can override the following methods: -Para dar suporte à conversão de tipo personalizado, substitua os métodos CanConvertFrom(ITypeDescriptorContext, Type), CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)e ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type).- To support custom type conversion, override the CanConvertFrom(ITypeDescriptorContext, Type), CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object), and ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) methods.

-Para converter os tipos que devem recriar o objeto para alterar seu valor, substitua os métodos CreateInstance(ITypeDescriptorContext, IDictionary) e GetCreateInstanceSupported(ITypeDescriptorContext).- To convert types that must re-create the object to change its value, override the CreateInstance(ITypeDescriptorContext, IDictionary) and GetCreateInstanceSupported(ITypeDescriptorContext) methods.

-Para converter tipos que dão suporte a propriedades, substitua os métodos GetProperties(ITypeDescriptorContext, Object, Attribute[]) e GetPropertiesSupported(ITypeDescriptorContext).- To convert types that support properties, override the GetProperties(ITypeDescriptorContext, Object, Attribute[]) and GetPropertiesSupported(ITypeDescriptorContext) methods. Se a classe que você está convertendo não tiver Propriedades e você precisar implementar propriedades, você poderá usar a classe TypeConverter.SimplePropertyDescriptor como uma base para implementar os descritores de propriedade.If the class you are converting does not have properties, and you need to implement properties, you can use the TypeConverter.SimplePropertyDescriptor class as a base for implementing the property descriptors. Ao herdar de TypeConverter.SimplePropertyDescriptor, você deve substituir os métodos GetValue(Object) e SetValue(Object, Object).When you inherit from TypeConverter.SimplePropertyDescriptor, you must override the GetValue(Object) and SetValue(Object, Object) methods.

-Para converter tipos que dão suporte a valores padrão, substitua os métodos GetStandardValues(ITypeDescriptorContext), GetStandardValuesExclusive(ITypeDescriptorContext), GetStandardValuesSupported(ITypeDescriptorContext) e IsValid(ITypeDescriptorContext, Object).- To convert types that support standard values, override the GetStandardValues(ITypeDescriptorContext), GetStandardValuesExclusive(ITypeDescriptorContext), GetStandardValuesSupported(ITypeDescriptorContext) and IsValid(ITypeDescriptorContext, Object) methods.


O tipo derivado pode ser marcado como internal ou private, mas uma instância do seu tipo pode ser criada com a classe TypeDescriptor.Your derived type might be marked as internal or private, but an instance of your type can be created with the TypeDescriptor class. Não grave código inseguro supondo que o chamador é confiável.Do not write insecure code by assuming the caller is trusted. Suponha que os chamadores possam criar instâncias do seu tipo em confiança parcial.Assume instead that callers might create instances of your type in partial trust.

Para obter mais informações sobre os conversores de tipo para fins gerais (não XAML), consulte [como: implementar um conversor de tipo](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/ayybcxe5(v=vs.120)) ou [conversão de tipo generalizada](https://msdn.microsoft.com/library/49253ae6-7657-4810-82ab-1176a6feeada).For more information about type converters for general (non-XAML) purposes, see [How to: Implement a Type Converter](https://docs.microsoft.com/previous-versions/visualstudio/visual-studio-2013/ayybcxe5(v=vs.120)) or [Generalized Type Conversion](https://msdn.microsoft.com/library/49253ae6-7657-4810-82ab-1176a6feeada).

Construtores

TypeConverter()

Inicializa uma nova instância da classe TypeConverter.Initializes a new instance of the TypeConverter class.

Métodos

CanConvertFrom(ITypeDescriptorContext, Type)

Retorna se esse conversor pode converter um objeto do tipo especificado no tipo desse conversor, usando o contexto especificado.Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context.

CanConvertFrom(Type)

Retorna se este conversor pode converter um objeto do tipo indicado para o tipo deste conversor.Returns whether this converter can convert an object of the given type to the type of this converter.

CanConvertTo(ITypeDescriptorContext, Type)

Retorna se esse conversor pode converter o objeto para o tipo especificado, usando o contexto especificado.Returns whether this converter can convert the object to the specified type, using the specified context.

CanConvertTo(Type)

Retorna se esse conversor pode converter o objeto para o tipo especificado.Returns whether this converter can convert the object to the specified type.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Converte o objeto determinado para o tipo deste conversor, usando o contexto especificado e as informações da cultura.Converts the given object to the type of this converter, using the specified context and culture information.

ConvertFrom(Object)

Converte o valor fornecido noo tipo deste conversor.Converts the given value to the type of this converter.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Converte a cadeia de caracteres fornecida para o tipo deste conversor usando a cultura invariável e o contexto especificado.Converts the given string to the type of this converter, using the invariant culture and the specified context.

ConvertFromInvariantString(String)

Converte a cadeia de caracteres fornecida para o tipo deste conversor usando a cultura invariável.Converts the given string to the type of this converter, using the invariant culture.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Converte o texto fornecido em um objeto, usando o contexto e a informação de cultura especificados.Converts the given text to an object, using the specified context and culture information.

ConvertFromString(ITypeDescriptorContext, String)

Converte o texto fornecido em um objeto, usando o contexto especificado.Converts the given text to an object, using the specified context.

ConvertFromString(String)

Converte o texto especificado em um objeto.Converts the specified text to an object.

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.Converts the given value object to the specified type, using the specified context and culture information.

ConvertTo(Object, Type)

Converte o objeto de valor especificado para o tipo especificado, usando os argumentos.Converts the given value object to the specified type, using the arguments.

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.Converts the specified value to a culture-invariant string representation, using the specified context.

ConvertToInvariantString(Object)

Converte o valor especificado em uma representação de cadeia de caracteres invariável da cultura.Converts the specified value to a culture-invariant string representation.

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.Converts the given value to a string representation, using the specified context and culture information.

ConvertToString(ITypeDescriptorContext, Object)

Converte o valor especificado em uma representação de cadeia de caracteres, usando o contexto fornecido.Converts the given value to a string representation, using the given context.

ConvertToString(Object)

Converte o valor especificado em uma representação de cadeia de caracteres.Converts the specified value to a string representation.

CreateInstance(IDictionary)

Recria um Object dado um conjunto de valores de propriedade do objeto.Re-creates an Object given a set of property values for the object.

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.Creates an instance of the type that this TypeConverter is associated with, using the specified context, given a set of property values for the object.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetConvertFromException(Object)

Retorna uma exceção a ser gerada quando uma conversão não puder ser executada.Returns an exception to throw when a conversion cannot be performed.

GetConvertToException(Object, Type)

Retorna uma exceção a ser gerada quando uma conversão não puder ser executada.Returns an exception to throw when a conversion cannot be performed.

GetCreateInstanceSupported()

Retorna se a alteração de um valor neste objeto requer uma chamada ao método CreateInstance(IDictionary) para criar um novo valor.Returns whether changing a value on this object requires a call to the CreateInstance(IDictionary) method to create a new value.

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.Returns whether changing a value on this object requires a call to CreateInstance(IDictionary) to create a new value, using the specified context.

GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(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.Returns a collection of properties for the type of array specified by the value parameter, using the specified context.

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.Returns a collection of properties for the type of array specified by the value parameter, using the specified context and attributes.

GetProperties(Object)

Retorna uma coleção de propriedades para o tipo de matriz especificado pelo parâmetro de valor.Returns a collection of properties for the type of array specified by the value parameter.

GetPropertiesSupported()

Retorna se este objeto dá suporte a propriedades.Returns whether this object supports properties.

GetPropertiesSupported(ITypeDescriptorContext)

Retorna se este objeto dá suporte a propriedades, usando o contexto especificado.Returns whether this object supports properties, using the specified context.

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.Returns a collection of standard values from the default context for the data type this type converter is designed for.

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.Returns a collection of standard values for the data type this type converter is designed for when provided with a format context.

GetStandardValuesExclusive()

Retorna se a coleção de valores padrão retornada de GetStandardValues() é uma lista exclusiva.Returns whether the collection of standard values returned from GetStandardValues() is an exclusive list.

GetStandardValuesExclusive(ITypeDescriptorContext)

Retorna se a coleção de valores padrão retornada de GetStandardValues() é uma lista exclusiva de valores possíveis, usando o contexto especificado.Returns whether the collection of standard values returned from GetStandardValues() is an exclusive list of possible values, using the specified context.

GetStandardValuesSupported()

Informa se esse objeto oferece suporte a um conjunto padrão de valores que podem ser escolhidos em uma lista.Returns whether this object supports a standard set of values that can be picked from a list.

GetStandardValuesSupported(ITypeDescriptorContext)

Retorna se este objeto dá suporte a um conjunto padrão de valores que podem ser escolhidos em uma lista, usando o contexto especificado.Returns whether this object supports a standard set of values that can be picked from a list, using the specified context.

GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
IsValid(ITypeDescriptorContext, Object)

Retorna se o objeto de valor fornecido é válido para esse tipo e para o contexto especificado.Returns whether the given value object is valid for this type and for the specified context.

IsValid(Object)

Retorna se o objeto de valor especificado é válido para esse tipo.Returns whether the given value object is valid for this type.

MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

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

Classifica uma coleção de propriedades.Sorts a collection of properties.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object.

(Herdado de Object)

Aplica-se a

Veja também