2010-10-28 4 views
25

Sto tentando di impostare il tipo di proprietà di un'impostazione dell'applicazione su un tipo enum personalizzato che ho definito nel mio assembly (chiama questo Progetto A)Perché non riesco a selezionare un tipo personalizzato per un'impostazione dallo stesso progetto/assieme del file delle impostazioni?

Nel browser delle impostazioni, faccio clic su Sfoglia e sono presentato con "Seleziona un Digitare "finestra di dialogo.

e le tipologie definite in Project A non sono sembrano essere a mia disposizione. Tuttavia, i tipi sono disponibili da altri progetti a cui è stato fatto riferimento.

sembra quasi oltre la comprensione per me che non sarebbe in grado di utilizzare i tipi definiti nel progetto di base, in modo da assumere che sto facendo qualcosa di sbagliato. Ho provato a costruire, pulire, ricostruire, riavviare senza fortuna, quindi cosa mi manca esattamente?

edit: screenshot qui http://tinypic.com/r/2ls8myb/7

+0

Eventuali duplicati di [Utilizzando proprio enum nelle impostazioni] (http://stackoverflow.com/questions/11916540/using-own-enum -in-impostazioni) – Legolas

+4

per quello che vale, ho posto questa domanda nell'ottobre 2010 e [utilizzando proprio enum nelle impostazioni] (http: // StackOverflow.it/questions/11916540/using-own-enum-in-settings) è stato chiesto successivamente nell'agosto 2011, quindi è stato difficile per me trovare questa domanda al momento. – fostandy

risposta

3

perché il vostro tipo non è serializzabile. Renderlo serializzabile e puoi definirlo nelle tue impostazioni.

+5

Ciao. Ho segnato il tipo come serializzabile. Dopo una pulizia e la ricostruzione non era ancora visibile. Posso chiedere perché altri tipi di altri gruppi che non sono contrassegnati come serializzabili sono visibili nel Browser dei tipi? – fostandy

13

stavo cercando di fare esattamente la stessa cosa in VS 2010 (.net 3.5). Si scopre che è possibile farlo utilizzando il designer delle impostazioni. L'interfaccia utente è totalmente imperfetta, come affermato, ma se inserisci manualmente il nome completo dell'enumerazione nella finestra Sfoglia funzionerà. Questo ha il vantaggio di non modificare il codice generato (* .Designer.cs), che è sempre buono da evitare perché quando lo fai non c'è alcuna garanzia che le modifiche non vengano sovrascritte.

PS - Questo sembra funzionare solo se l'enum è pubblico.

Impostazioni GUI:

enter image description here

Quindi digitare manualmente pienamente qualificati nome del tipo:

enter image description here

A un certo punto Giuro che ho visto una discesa dei valori enum in la colonna Valore, ma non l'ho vista da allora e devi solo digitare un valore appropriato in.

+2

Nel caso in cui questo non funzioni per chiunque, prova a verificare che il tipo personalizzato sia pubblico. – Elliot

+0

Giusto per confermare: ho visto anche il menu a discesa che hai menzionato, ma non viene più visualizzato ... Fantastico come le cose banali possono essere molto difficili in WPF :( – heltonbiker

+0

Ritengo che questo metodo sia più semplice e più veloce di provare a modificare le Impostazioni. file delle impostazioni a mano. –

4

Non sono riuscito nemmeno a navigare nel mio tipo personalizzato. Sono stato in grado di aggiungere il mio tipo personalizzato aprendo il file Settings.settings in un editor di testo e aggiungendo l'impostazione alla sezione Impostazioni in questo modo:

<Setting Name="Options" Type="MyProject.MyOptions" Scope="User"> 
    <Value Profile="(Default)" /> 
</Setting> 

Il progettista impostazioni lamenta quando l'ho aperto, ma ho appena rispondo 'No' a quella finestra di dialogo, e sono in grado di usare le impostazioni personalizzate nel mio progetto.

+0

Questo ha funzionato per me, dopo che per qualche motivo non riesco a comprendere @ La soluzione di Sean non ha funzionato –

+0

Beh, ha quasi funzionato.Tuttavia VS non ha serializzato l'impostazione nel file app.config in tutto, il che significa che non può essere impostato in fase di esecuzione. –

0

Stavo provando lo stesso e la soluzione era molto semplice: costruisci prima.

Ho aggiunto una classe enum, definito alcuni valori e poi ho provato a sostituire un valore int nel file Settings.settings con il mio nuovo enum, quindi non devo abbinare il valore più tardi. Il tipo non è stato trovato. Perché non ho ancora costruito.

dopo aver costruito una volta che il nuovo tipo enum è nota e può essere utilizzato :)

Problemi correlati