Właśnie natknąłem się na ApplicationSettings w WinFormach .NET, które mogą obsługiwać typy złożone.
Obecnie używam AppSettings w moich WebForms ASP.NET, które mogą obsługiwać tylko ciąg.
Czy mogę użyć ApplicationSettings w formularzach internetowych? Jeśli tak to jak?Ustawienia aplikacji typu niestandardowego w ASP.NET
Odpowiedz
Podstawowa idea:
W innym projekcie, tworzenia klas, które posiadają swoje ustawienia niestandardowe. Na przykład:
public class EndPoint { public string HostName { get; set; } public int Port { get; set; } } public class EndPointCollection : Collection<EndPoint> { }
Zbuduj projekt zawierający klasy.
Przejdź do zakładki Ustawienia w Właściwości projektu. Powie, że nie ma jeszcze pliku ustawień i zapytaj, czy chcesz go utworzyć.
Dodaj nowy plik ustawień. W polu typu wybierz Przeglądaj i wpisz pełną nazwę klasy. Na przykład:
ClassLibrary.EndPointCollection
. Zapisz i odbuduj projekt.Naciśnij przycisk edycji dla wartości ustawienia. (Zauważ, że nie będzie to możliwe, jeśli klasy wykonane we wcześniejszym kroku są w tym samym projekcie.) Użyj interfejsu do edycji ustawień.
Jeśli otworzysz web.config/app.config plik, zobaczysz coś takiego:
... <applicationSettings> <WebApplication1.Properties.Settings> <setting name="MyEndPoints" serializeAs="Xml"> <value> <ArrayOfEndPoint xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <EndPoint> <HostName>MyHostName</HostName> <Port>12345</Port> </EndPoint> <EndPoint> <HostName>MyHost1</HostName> <Port>1212</Port> </EndPoint> </ArrayOfEndPoint> </value> </setting> </WebApplication1.Properties.Settings> </applicationSettings> ...
Wreszcie, aby przeczytać te ustawienia z kod, po prostu użyj
var endPointCollection = Settings.Default.MyEndPoints;
The d esigner stworzy, za kulisami, silnie wpisane obiekty, aby umożliwić powyższe działanie. Możesz zobaczyć pełne szczegóły w pliku
Settings.Designer.cs
.
Dolna linia: możesz wykonywać wszystkie rodzaje niestandardowych ustawień, o ile te ustawienia mają XmlSerializable lub mają konwerter typów. Ta technika działa na aplikacji internetowych, WinForms, WPF, aplikacji konsolowych itp
W przypadku, gdy ktoś jeszcze nie jest widząc przycisk edytora '...' może to wynikać z tego, że klasa musi znajdować się w innym projekcie, niż gdzie znajdują się ustawienia, w ten sposób struktura jest uporządkowana, ale nie jest to jasne. ograniczenie "według: http://msdn.microsoft.com/en-us/library/wabtadw6(v=vs.100).aspx –
Dla tych, którzy są sceptycznie nastawieni do proponowanej odpowiedzi, polecam sprawdzenie następującego pytania/answer: http://stackoverflow.com/questions/204695/stor ing-values-in-the-web-config-appsettings-or-configsection-co-is-more ... co przychodzi z pomysłem utworzenia sekcji konfiguracji niestandardowej – Learner
@AustinThompson, myślę, że technicznie, klasa musi być w innej * przestrzeni nazw * do projektu; nadal działa, jeśli jest w tym samym projekcie, ale z inną przestrzenią nazw. – Sam
Oto wariacja na zaakceptowanej odpowiedzi, stosując następujące klasy zdefiniowanej przez użytkownika do reprezentowania ustawienie:
namespace MyApplication
{
public class EndPoint
{
public string HostName { get; set; }
public int Port { get; set; }
}
}
Zaakceptowanych odpowiedź proponuje korzystanie z wyspecjalizowanej klasy kolekcji, EndPointCollection
do przechowywania ustawień. Jednak nie uważam tego za konieczne; Typ tablicy (EndPoint[]
) również wydaje się działać.
Jednak wpisywanie typu tablicy w przeglądarce typów nie działa; możesz zamiast tego określić typ bezpośrednio w .Ustawienia pliku (przy użyciu edytora tekstu):
<Setting Name="MyEndPoints" Type="MyApplication.EndPoint[]" Scope="User">
<Value Profile="(Default)" />
</Setting>
Ponadto, jeśli redaktor wartość wykazana w przyjętym odpowiedź nie jest dostępny, można zamiast wpisać wartości bezpośrednio w polu wartości za pomocą XML:
<ArrayOfEndPoint>
<EndPoint>
<HostName>MyHostName</HostName>
<Port>12345</Port>
</EndPoint>
<EndPoint>
<HostName>MyHost1</HostName>
<Port>1212</Port>
</EndPoint>
</ArrayOfEndPoint>
Należy pamiętać, że deklaracje przestrzeni nazw XML, że Visual Studio generuje nie są konieczne w formacie XML, jak pokazano powyżej.
Należy również zauważyć, że powyższe nie działa dla członków typu szeregowego, które są tylko do odczytu (ustawienie właściwości prywatnej lub pole 'readonly'). Co niestety oznacza, że dla wielu rodzajów typów zdefiniowanych przez użytkownika ktoś chciałby przechowywać w ustawieniach - np. proste niezmienne typy przechowywania wartości - ta bardzo użyteczna technika nie może być użyta. :( –
- 1. ASP.NET Core RC2 Skonfiguruj niestandardowe ustawienia aplikacji
- 2. Tworzenie niestandardowego modelu Binder dla niestandardowego typu
- 3. Określanie niestandardowego kontekstu aplikacji
- 4. Zastąpienie Asp.net Ustawienia członkostwa w czasie wykonywania (asp.net mvc)
- 5. Jak zaktualizować ustawienia aplikacji w aplikacji WPF?
- 6. ograniczenie typu właściwości niestandardowego atrybutu
- 7. Jak używać niestandardowego typu w kolumnie JPA?
- 8. Tworzenie niestandardowego pliku .config w asp.net
- 9. Implementowanie niestandardowego dostawcy profilu w ASP.NET MVC
- 10. Przełęcz zmienna niestandardowego typu do niestandardowego MSBuild zadania
- 11. ustawienie typu MIME w ASP.NET
- 12. NSMetadataQuery ignorowanie niestandardowego typu pliku pliku
- 13. Jak przechowywać ustawienia aplikacji w modułach
- 14. Ustawienia przykładowej/aplikacji xml w xml
- 15. winform na Ustawienia aplikacji: nie można zapisać ustawienia aplikacji, które zostały dodane w czasie wykonywania
- 16. dequeueReusableCellWithIdentifier nie zwraca komórki mojego niestandardowego typu
- 17. Obiekt typu niestandardowego jako klucz słownikowy
- 18. Jak zmienić ustawienia aplikacji (Ustawienia), gdy aplikacja jest otwarta?
- 19. Wordpress - Usuń podmenu z niestandardowego posta typu:
- 20. Konwersja QVariant niestandardowego typu na QString
- 21. Jak mam przechowywać ustawienia witryny ASP.NET MVC?
- 22. Wyliczenie niestandardowe jako typ ustawienia aplikacji w języku C#?
- 23. Lokalizacja niestandardowego atrybutu sprawdzania ASP.NET Core
- 24. Zapisywanie niestandardowego atrybutu w C# jak ASP.Net MVC Autoryzuj atrybut
- 25. Użytkownicy online w aplikacji ASP.NET
- 26. Jak dodać przycisk do niestandardowego typu postu w Wordpress?
- 27. Sposób korzystania z adnotacji typu niestandardowego w Javie
- 28. Pole Walidacja i wyświetlając błąd w wordpress niestandardowego typu postu
- 29. Dodawanie wielu meta-pudełka do niestandardowego typu postu w Wordpress
- 30. Obraz niestandardowy rozmiar dla niestandardowego typu postu w Wordpress
Zamiast tego użyj Web.config. – BizApps
Myślę, że o to pytasz: "Czy możesz przechowywać bardziej złożone typy w podobny sposób, jak AppSettings w aplikacji sieciowej? Jeśli tak, to musisz spojrzeć na" Zasoby osadzone "zamiast przechowywać je w Internecie. Config –
@Dave: http://stackoverflow.com/questions/6288943/web-config-appsettings-complex-values/6288986#62889986 wywołało to pytanie.Przeczytaj komentarze Jestem sceptyczny – naveen