Compartir vía


TypeConverter Clase

Definición

Proporciona una manera unificada de convertir tipos de valores a otros tipos, así como para acceder a valores estándar y 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($"{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

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 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 siguiente ejemplo 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)

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 se convierte en y desde una representación de texto. El convertidor de tipos de una clase está enlazado a la clase con un TypeConverterAttribute. A menos que este atributo se invalide, 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 directamente TypeConverterAttribute , en lugar de pasar por TypeDescriptor. En los casos en los que desee una instancia de TypeDescriptor del código, o en los que cree una instancia compartida en WPF recursos, es aceptable construirla directamente sin hacer referencia a TypeDescriptor u otra compatibilidad con el sistema de reflexión y tipo.

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 a partir 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 miembros de 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 Convertidores de tipos para información general sobre XAML.

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.

Constructores

Nombre Description
TypeConverter()

Inicializa una nueva instancia de la clase TypeConverter.

Métodos

Nombre Description
CanConvertFrom(ITypeDescriptorContext, Type)

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

CanConvertFrom(Type)

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

CanConvertTo(ITypeDescriptorContext, Type)

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

CanConvertTo(Type)

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

ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

Convierte el objeto especificado en el tipo de este convertidor mediante 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 especificada en el tipo de este convertidor, utilizando la referencia cultural invariable y el contexto especificado.

ConvertFromInvariantString(String)

Convierte la cadena especificada en el tipo de este convertidor mediante la referencia cultural invariable.

ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

Convierte el texto especificado en un objeto utilizando el contexto y la información de referencia cultural especificados.

ConvertFromString(ITypeDescriptorContext, String)

Convierte el texto especificado en un objeto utilizando el contexto especificado.

ConvertFromString(String)

Convierte el texto especificado en un objeto .

ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

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

ConvertTo(Object, Type)

Convierte el objeto de valor especificado en el tipo especificado mediante los argumentos .

ConvertToInvariantString(ITypeDescriptorContext, Object)

Convierte el valor especificado en una representación de cadena invariable de referencia cultural mediante el contexto especificado.

ConvertToInvariantString(Object)

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

ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

Convierte el valor especificado en una representación de cadena mediante el contexto y la información de referencia cultural especificados.

ConvertToString(ITypeDescriptorContext, Object)

Convierte el valor especificado en una representación de cadena mediante el contexto especificado.

ConvertToString(Object)

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

CreateInstance(IDictionary)

Vuelva a crear un Object conjunto determinado de valores de propiedad para el objeto .

CreateInstance(ITypeDescriptorContext, IDictionary)

Crea una instancia del tipo al que TypeConverter está asociado, utilizando el contexto especificado, dado 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 produce cuando no se puede realizar una conversión.

GetConvertToException(Object, Type)

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

GetCreateInstanceSupported()

Devuelve si cambiar un valor en este objeto requiere una llamada al CreateInstance(IDictionary) método para crear un nuevo valor.

GetCreateInstanceSupported(ITypeDescriptorContext)

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

GetHashCode()

Sirve como función hash predeterminada.

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

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

GetProperties(ITypeDescriptorContext, Object)

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

GetProperties(Object)

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

GetPropertiesSupported()

Devuelve si este objeto admite propiedades.

GetPropertiesSupported(ITypeDescriptorContext)

Devuelve si este objeto admite propiedades, utilizando 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 de GetStandardValues() es una lista exclusiva.

GetStandardValuesExclusive(ITypeDescriptorContext)

Devuelve si la colección de valores estándar devueltos de GetStandardValues() es una lista exclusiva de valores posibles, 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 mediante el contexto especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsValid(ITypeDescriptorContext, Object)

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

IsValid(Object)

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

MemberwiseClone()

Crea una copia superficial del Objectactual.

(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