TypeConverter Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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:
Para admitir la conversión de tipos personalizados, reemplace los CanConvertFrom(ITypeDescriptorContext, Type)métodos , CanConvertTo(ITypeDescriptorContext, Type), ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)y ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type) .
Para convertir tipos que deben volver a crear el objeto para cambiar su valor, invalide los CreateInstance(ITypeDescriptorContext, IDictionary) métodos y GetCreateInstanceSupported(ITypeDescriptorContext) .
Para convertir tipos que admiten propiedades, invalide los GetProperties(ITypeDescriptorContext, Object, Attribute[]) métodos y GetPropertiesSupported(ITypeDescriptorContext) . Si la clase que va a convertir no tiene propiedades y necesita implementar propiedades, puede usar la TypeConverter.SimplePropertyDescriptor clase como base para implementar los descriptores de propiedad. Cuando hereda de TypeConverter.SimplePropertyDescriptor, debe invalidar los GetValue(Object) métodos y SetValue(Object, Object) .
Para convertir tipos que admiten valores estándar, invalide los GetStandardValues(ITypeDescriptorContext)métodos , GetStandardValuesExclusive(ITypeDescriptorContext)GetStandardValuesSupported(ITypeDescriptorContext) y IsValid(ITypeDescriptorContext, Object) .
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
- TypeConverterAttribute
- PropertyDescriptorCollection
- TypeConverter.SimplePropertyDescriptor
- TypeConverter.StandardValuesCollection
- Información general sobre los convertidores de tipos para XAML
- Atributos CLR relacionados con XAML para tipos y bibliotecas personalizados
- Definición de tipos personalizados para usarlos con los servicios XAML de .NET
- Documentación conceptual de servicios XAML de NET