Domanda

Sto usando Windows Form e VS2008. Voglio memorizzare un valore enum nel file delle impostazioni della mia applicazione.

L'editor delle impostazioni in VS2008 mi dà solo un set limitato di tipi. Sorprendentemente, gli enum non sembrano essere uno di questi tipi che sono automaticamente supportati - l'ho capito bene?

Dalla lettura dell'argomento, sembra che potrei aver bisogno di scrivere una classe TypeConverter, per consentire al mio enum di convertirsi in stringa e viceversa. Ho implementato questo per il mio enum e ho aggiunto la proprietà TypeConverter al mio enum, per indicare quale classe di convertitore usare per quell'enum.

Tuttavia, quando provo a specificarlo nella finestra di dialogo del mio file di impostazioni (nella finestra "Seleziona un tipo"), si dice semplicemente che il mio tipo non è definito, quindi sono un po 'bloccato.

Qualcuno può spiegarmi come archiviare un enum in un file Settings in un'app di Windows Forms? Sembra una funzionalità così incredibilmente semplice (e comunemente richiesta) che mi stupisco che non sia già supportato e che sembro dover fare così tanto lavoro per farlo funzionare (e per un solo enum!).

Quindi penso che mi debba mancare qualcosa, ed è davvero molto semplice ...

Diciamo che il mio enum si presenta così:

namespace MyApp
{
    enum MyEnum
    {
        Yes,
        No
    }
}

... come posso memorizzare un valore da questo enum nel mio file delle impostazioni? (E recuperalo, ovviamente).

(Ovviamente posso solo memorizzare una stringa o un numero intero e interpretare me stesso, ma sembra piuttosto goffo, e mi aspetto che Windows Form gestisca questo tipo di cose in modo più pulito.)

È stato utile?

Soluzione

Gli enum non sono in realtà così lontani dai tipi numerici (default int) e possono essere usati in modo intercambiabile. Non penso che sia goffo andare avanti e indietro e memorizzare l'int. In effetti solo le stringhe possono essere memorizzate nel file delle impostazioni. Ciò significa, per estensione, tutto ciò che è serializzabile su stringa.

Un altro modo sarebbe quello di memorizzare il valore del testo (quindi è modificabile dall'uomo) dell'enum e analizzarlo usando Enum.Parse (tipo, stringa).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top