2010-02-02 14 views
20

Jeśli masz enum w C#:Wyliczenie niestandardowe jako typ ustawienia aplikacji w języku C#?

[Serializable] 
public enum OperatingSystem 
{ 
    Windows, 
    Macintosh 
} 

dla mojej aplikacji używam ustawienia aplikacji, gdzie mogę wybrać jakiego typu powinno być ustawienie. Pomyślałem, że gdy wybiorę Przeglądaj, mogę wybrać moje wyliczenie lub wpisać pełną ścieżkę, aby wybrać wyliczenie jako typ.

Edit:
ustawić typ do mojego Enum, ale warto (gdzie Windows, Macintosh powinny być) tylko w systemie Windows jest widoczna i jestem w stanie wprowadzić dowolny ciąg znaków.

+4

Proszę poprawić brakujące zdjęcie. – sweetlilmre

Odpowiedz

31

Widzę to w VC# Express 2005. Okno dialogowe Przeglądaj .. "Wybierz typ" pokazuje tylko przestrzenie nazw System i Microsoft. Jednak jeśli wstawisz pełną nazwę typu do pola tekstowego Wybrany typ, powinna go zaakceptować.

+0

Rzeczywiście. Ale wartości nie są wyświetlane lub wyświetla tylko pole tekstowe z "Windows". Ale mogę nawet nadać mu wartość "to jest ciąg". – MysticEarth

+1

To normalne, w XML dane są przechowywane jako ciąg. Teoretycznie możesz wprowadzić inną wartość niż jedna w Enum (to jest powód istnienia Enum.IsDefined). Wyrzuci wyjątek, ale możesz to zrobić :). –

+1

FYI, działa to również w przypadku ustawień użytkownika. Próbowałem, działa świetnie! – MPelletier

0

ja nie wiem, czy mam rozumieć swoje pytanie bardzo dobrze, ale kiedy tworzę custom configuration section używać w moich plikach konfiguracyjnych aplikacji utworzyć właściwość enum przy użyciu TypeConverter attribute wraz z EnumConverter.

Mam nadzieję, że pomoże, ale daj mi znać, jeśli źle zrozumiałem twoje pytanie.

+0

Proszę zobaczyć moją edycję dla wyjaśnienia :) – MysticEarth

+0

Nie mam doświadczenia z opisanym scenariuszem, ale dałbym usłudze SettingsSerializeAsAttribute szansę. Spróbuj zastosować go do swojego wyliczenia i jako parametr przekaż parametr SettingsSerializeAs.String. –

13

Oczywiście - wystarczy dodać do projektu wyodrębnienie z numeracją, wybrać przeglądanie i wpisać kwalifikowaną nazwę przestrzeni nazw, np. ClassLibrary1.OperatingSystems. Bingo.

„ustawić typ do mojego Enum, ale w Wartość (gdzie Windows, Macintosh powinny być) tylko w systemie Windows jest widoczna i jestem stanie wprowadzić dowolny ciąg znaków”.

Czy próbowałeś wprowadzić coś innego niż "windows" lub "macintosh"? Zachowanie, które widzisz, jest tak bliskie, jak tego chcesz. Jestem tego całkiem pewna.

W każdym razie ... powodzenia.

Zobacz tutaj done in 30 seconds tutaj.

+0

Jak widać w moim poście, mam już wyliczalne wyliczenie. To jest problem :) – MysticEarth

+0

jaki jest problem? to jest tak blisko, jak masz zamiar dostać. ;-) –

+0

Bardzo podobał mi się screencast. Widok ten pomógł mi odpowiedzieć na moje dalsze pytania. – Mike

15

Mały dodatek do wszystkich poprzednich odpowiedzi. Co do mnie - konieczne było rozwiązanie BUILD zanim moje wyliczenie niestandardowe zostało pomyślnie dodane do pola tekstowego "Typ niestandardowy".

Powiązane problemy