Pregunta

Estoy usando Windows Forms y VS2008. Quiero almacenar un valor de enumeración en el archivo de configuración de mi aplicación.

El editor de configuraciones en VS2008 solo me da un conjunto limitado de tipos. Sorprendentemente, las enumeraciones no parecen ser uno de estos tipos que se admiten automáticamente. ¿Lo he entendido correctamente?

Al leer sobre el tema, parece que podría necesitar escribir una clase TypeConverter, para permitir que mi enumeración se convierta en cadena y viceversa. Implementé esto para mi enumeración y agregué la propiedad TypeConverter a mi enumeración, para indicar qué clase de convertidor usar para esa enumeración.

Sin embargo, cuando trato de especificar esto en mi archivo de configuración (en el cuadro de diálogo 'Seleccionar un tipo'), solo dice que mi tipo no está definido, por lo que estoy atascado.

¿Alguien puede explicarme cómo almaceno una enumeración en un archivo de Configuración en una aplicación de Windows Forms? Parece una pieza de funcionalidad tan simple (y comúnmente requerida) que me sorprende que todavía no sea compatible, y parece que tengo que hacer mucho trabajo para que funcione (¡y solo por una enumeración!).

Por lo tanto, creo que me falta algo, y en realidad es muy fácil ...

Digamos que mi enumeración se ve así:

namespace MyApp
{
    enum MyEnum
    {
        Yes,
        No
    }
}

... ¿cómo almaceno un valor de esta enumeración en mi archivo de configuración? (Y recuperarlo, por supuesto).

(Obviamente, puedo almacenar una cadena o un número entero e interpretarme, pero eso parece bastante torpe, y esperaría que Windows Forms maneje este tipo de cosas de manera más limpia).

¿Fue útil?

Solución

Las enumeraciones en realidad no están tan alejadas de los tipos numéricos (int por defecto) y se pueden usar de manera intercambiable. No creo que sea torpe lanzar y retroceder y almacenar el int. De hecho, solo las cadenas se pueden almacenar en el archivo de configuración. Esto significa, por extensión, cualquier cosa que sea serializable en cadena.

Otra forma sería almacenar el valor de texto (para que sea editable por humanos) de la enumeración y analizarlo usando Enum.Parse (tipo, cadena).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top