Pergunta

Eu estou usando formulários e VS2008 Windows. Eu quero armazenar um valor de enumeração no arquivo de configurações do meu aplicativo.

O editor de configurações no VS2008 só me dá um conjunto limitado de tipos. Surpreendentemente, enums não parecem ser um desses tipos que são automaticamente suportados - se eu entendi isso corretamente

?

De lendo sobre o assunto, parece que eu poderia precisar escrever uma classe TypeConverter, para permitir que o meu enum para convertido para string e vice-versa. Eu tenho implementado isso para o meu enum, e acrescentou a propriedade TypeConverter ao meu enum, para indicar qual a classe de conversor para usar para que enum.

No entanto, quando tento especificar isso no meu arquivo de configurações (no 'Selecione um tipo de') de diálogo, ele apenas diz que o meu tipo não está definido, então eu sou o tipo de preso.

Alguém pode me explicar como eu armazenar um enum em um arquivo de configurações em um aplicativo de formulários do Windows? Parece que tal um pedaço crushingly simples (e geralmente exigido) de funcionalidade que eu estou espantado ainda não estiver apoiado, e que eu pareço ter que fazer muito trabalho para obtê-lo para o trabalho (e por apenas um enum!).

Portanto, eu acho que deve estar faltando alguma coisa, e é realmente muito fácil ...

Digamos meus enum parece com isso:

namespace MyApp
{
    enum MyEnum
    {
        Yes,
        No
    }
}

... como faço para armazenar um valor a partir deste enum em meu arquivo de configurações? (E recuperá-lo, é claro).

(Obviamente eu só posso armazenar uma string ou inteiro e interpretar a mim mesmo, mas isso parece bastante desajeitado, e eu esperaria Windows Forms para lidar com esse tipo de coisa mais limpa.)

Foi útil?

Solução

Enums são realmente não muito longe de tipos numéricos (int padrão) e podem ser usados ??de forma alternada. Eu não acho que é desajeitado para trás elenco e para trás e armazenar o int. Na verdade apenas strings podem ser armazenados no arquivo de configurações. Isto significa, por extensão, qualquer coisa que é serializado para string.

Outra forma seria para armazenar o valor de texto (por isso é editável humano) da enumeração e analisá-lo usando Enum.Parse (tipo, string).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top