Conversión de tipos generalizada
.NET Framework proporciona los dos mecanismos siguientes para convertir tipos de datos definidos por el usuario (tipos personalizados) en otros tipos de datos:
Definir un convertidor de tipos para un tipo personalizado extendiendo la clase System.ComponentModel.TypeConverter y asociando el convertidor de tipos al tipo mediante un atributo System.ComponentModel.TypeConverterAttribute.
Implementar la interfaz System.IConvertible en un tipo personalizado.
En la tabla siguiente se resaltan las diferencias entre los dos mecanismos.
[!NOTA]
Se puede proporcionar compatibilidad en tiempo de diseño para un tipo personalizado sólo si se ha definido un convertidor de tipos para éste.
Conversión mediante TypeConverter |
Conversión mediante IConvertible |
---|---|
Se puede utilizar en tiempo de diseño y en tiempo de ejecución. |
Sólo se puede utilizar en tiempo de ejecución. |
Usa la reflexión; por tanto, es más lenta que la conversión mediante IConvertible. |
No utiliza la reflexión. |
Permite realizar conversiones bidireccionales, es decir, convertir el tipo personalizado en otros tipos de datos y convertir otros tipos de datos en el tipo personalizado.Por ejemplo, un objeto TypeConverter definido para MiTipo permite convertir MiTipo en String y String en MiTipo. |
Permite convertir el tipo personalizado en otros tipos de datos, pero no otros tipos de datos en el tipo personalizado. |
Nota
Un TypeConverter se implementa para un tipo fuera de éste y se asocia al tipo mediante la aplicación de un atributo TypeConverterAttribute.
|
Nota
La implementación de IConvertible la realiza un tipo personalizado.Para convertir un tipo, un usuario de ese tipo llama a un método de conversión (del contrato IConvertible) en el tipo.
|
Para obtener información detallada sobre cómo utilizar los convertidores de tipos para realizar conversiones, vea System.ComponentModel.TypeConverter.Para obtener información sobre cómo se implementa un convertidor de tipos con el fin de proporcionar funcionalidad en tiempo de diseño para un tipo personalizado, vea Implementar un convertidor de tipos.
Vea también
Tareas
Cómo: Implementar un convertidor de tipos