Compartir a través de


TypeConverter Clase

Definición

Proporciona un modo unificado para convertir los tipos de valores en otros tipos, así como para obtener acceso a valores estándar y a subpropiedades.

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
Herencia
TypeConverter
Derivado
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo crear una instancia de un convertidor de tipos y enlazarla a una clase . La clase que implementa el convertidor, MyClassConverter, debe heredar de la TypeConverter clase .

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

Cuando tenga una propiedad que tenga una enumeración, compruebe si un valor de enumeración es válido antes de establecer la propiedad. El siguiente ejemplo de código requiere que se haya declarado una enumeración llamada 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

Otro uso común del convertidor de tipos es convertir un objeto en una cadena. En el ejemplo de código siguiente se imprime el nombre del Color objeto almacenado en la variable 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))

También puede usar un convertidor de tipos para convertir un valor a partir de su nombre, como se muestra en el ejemplo de código siguiente.

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)

En el ejemplo de código siguiente, puede usar un convertidor de tipos para imprimir el conjunto de valores estándar que admite el objeto.

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

Comentarios

El tipo de convertidor más común es aquel que convierte a una representación de texto y desde esta. El convertidor de tipos de una clase está enlazado a la clase con un elemento TypeConverterAttribute. A menos que se invalide este atributo, todas las clases que heredan de esta clase usan el mismo convertidor de tipos que la clase base.

Nota

Para fines generales del sistema de tipos, no acceda directamente a un convertidor de tipos. En su lugar, acceda al convertidor adecuado mediante TypeDescriptor. Para obtener más información, consulte los ejemplos de código proporcionados.

Sin embargo, cuando se usa XAML, un procesador XAML busca TypeConverterAttribute directamente, en lugar de pasar por TypeDescriptor. En los casos en los que desee una TypeDescriptor instancia del código o en los que cree una instancia compartida en recursos de WPF, es aceptable construirla directamente sin hacer referencia TypeDescriptor a u otra reflexión y compatibilidad con el sistema de tipos.

A menudo se hace referencia a las clases derivadas de TypeConverter como parte de cómo un procesador XAML convierte un atributo o un valor de texto de inicialización del marcado (que es inherentemente una cadena) y genera un objeto para una representación en tiempo de ejecución. Los autores de tipos personalizados que pretenden admitir un comportamiento de conversión de tipos para XAML suelen implementar una TypeConverter clase que admita su propio comportamiento único ConvertFrom de una cadena. Este comportamiento habilita la conversión de tipos de la cadena proporcionada como un valor de atributo XAML y proporciona un procesador XAML con la compatibilidad necesaria para crear un objeto a partir de la cadena, de modo que el objeto se pueda generar en un gráfico de objetos analizados. Los tipos personalizados o los miembros de los tipos personalizados se indican aplicando TypeConverterAttribute a las definiciones, con el atributo que hace referencia a la implementación personalizada TypeConverter . Para obtener más información, consulta Type Converters for XAML Overview.

Notas a los desarrolladores de herederos

Hereda de para implementar sus propios requisitos de TypeConverter conversión. Al heredar de esta clase, puede invalidar los métodos siguientes:

Nota: El tipo derivado puede marcarse como internal o private, pero se puede crear una instancia del tipo con la TypeDescriptor clase . No escriba código no seguro suponiendo que el autor de la llamada sea de confianza. Supongamos que, en su lugar, los autores de llamadas pueden crear instancias del tipo en confianza parcial.

Para obtener más información sobre los convertidores de tipos para fines generales (no XAML), consulta How to: Implement a Type Converter o Generalized Type Conversion.

Constructores

TypeConverter()

Inicializa una nueva instancia de la clase TypeConverter.

Métodos

CanConvertFrom(ITypeDescriptorContext, Type)

Devuelve si este convertidor puede convertir un objeto del tipo especificado al tipo de este convertidor, mediante el contexto especificado.

CanConvertFrom(Type)

Devuelve si este convertidor puede convertir un objeto del tipo dado al tipo de este convertidor.

CanConvertTo(ITypeDescriptorContext, Type)

Devuelve si este convertidor puede convertir el objeto al tipo especificado, con el contexto especificado.

CanConvertTo(Type)

Devuelve si este convertidor puede convertir el objeto al tipo especificado.

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Convierte el objeto dado al tipo de este convertidor, utilizando el contexto y la información de referencia cultural especificados.

ConvertFrom(Object)

Convierte el valor especificado en el tipo de este convertidor.

ConvertFromInvariantString(ITypeDescriptorContext, String)

Convierte la cadena dada en el tipo de este convertidor, utilizando el contexto especificado y la referencia cultural invariable.

ConvertFromInvariantString(String)

Convierte la cadena dada al tipo de este convertidor, utilizando la referencia cultural invariable.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Convierte el texto dado a un objeto, utilizando el contexto especificado y la información de referencia cultural.

ConvertFromString(ITypeDescriptorContext, String)

Convierte el texto dado a un objeto, utilizando el contexto especificado.

ConvertFromString(String)

Convierte el texto especificado a un objeto.

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

Convierte el objeto de valor dado al tipo especificado, utilizando el contexto y la información de referencia cultural especificados.

ConvertTo(Object, Type)

Convierte el objeto de valor dado al tipo especificado, utilizando los argumentos.

ConvertToInvariantString(ITypeDescriptorContext, Object)

Convierte el valor especificado a una representación de cadena invariable de la referencia cultural, utilizando el contexto especificado.

ConvertToInvariantString(Object)

Convierte el valor especificado a una representación de cadena invariable de la referencia cultural.

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Convierte el valor dado a una representación de cadena, utilizando el contexto especificado y la información de referencia cultural.

ConvertToString(ITypeDescriptorContext, Object)

Convierte el valor dado a una representación de cadena, utilizando el contexto especificado.

ConvertToString(Object)

Convierte el valor especificado a una representación de cadena.

CreateInstance(IDictionary)

Vuelve a crear un Object dado un conjunto de valores de propiedad del objeto.

CreateInstance(ITypeDescriptorContext, IDictionary)

Crea una instancia del tipo al que está asociado este TypeConverter, mediante el contexto especificado, según un conjunto de valores de propiedad para el objeto.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetConvertFromException(Object)

Devuelve una excepción que se debe iniciar cuando no se puede realizar una conversión.

GetConvertToException(Object, Type)

Devuelve una excepción que se debe iniciar cuando no se puede realizar una conversión.

GetCreateInstanceSupported()

Devuelve un valor que indica si, al cambiar un valor en este objeto, es necesario llamar al método CreateInstance(IDictionary) para crear un nuevo valor.

GetCreateInstanceSupported(ITypeDescriptorContext)

Devuelve si el cambio de un valor en este objeto requiere una llamada a CreateInstance(IDictionary) para crear un nuevo valor, mediante el contexto especificado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetProperties(ITypeDescriptorContext, Object)

Devuelve una colección de propiedades para el tipo de matriz especificado por valor del parámetro, utilizando el contexto especificado.

GetProperties(ITypeDescriptorContext, Object, Attribute[])

Devuelve una colección de propiedades para el tipo de matriz especificado por el parámetro de valor, usando el contexto y los atributos especificados.

GetProperties(Object)

Devuelve una colección de propiedades para el tipo de matriz especificado por el valor del parámetro.

GetPropertiesSupported()

Devuelve si este objeto admite propiedades.

GetPropertiesSupported(ITypeDescriptorContext)

Devuelve si este objeto admite propiedades, mediante el contexto especificado.

GetStandardValues()

Devuelve una colección de valores estándar del contexto predeterminado para el tipo de datos para el que está diseñado este convertidor de tipos.

GetStandardValues(ITypeDescriptorContext)

Devuelve una colección de valores estándar para el tipo de datos para el que está diseñado este convertidor de tipos cuando se proporciona con un contexto de formato.

GetStandardValuesExclusive()

Devuelve si la colección de valores estándar devueltos por GetStandardValues() es una lista exclusiva.

GetStandardValuesExclusive(ITypeDescriptorContext)

Devuelve si la colección de valores estándar devueltos por GetStandardValues() es una lista exclusiva de posibles valores, utilizando el contexto especificado.

GetStandardValuesSupported()

Devuelve si este objeto admite un conjunto estándar de valores que se pueden seleccionar de una lista.

GetStandardValuesSupported(ITypeDescriptorContext)

Devuelve si este objeto admite un conjunto estándar de valores que se pueden seleccionar de una lista, utilizando el contexto especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsValid(ITypeDescriptorContext, Object)

Indica si el objeto de valor especificado es válido para este tipo y para el contexto especificado.

IsValid(Object)

Devuelve si el valor de objeto dado es válido para este tipo.

MemberwiseClone()

Crea una copia superficial del Object actual.

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

Ordena una colección de propiedades.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también