Automatyczne generowanie silnie wpisanej klasy AppSettings

Oto pytanie pierwsze:

czy to możliwe? Czerpię z tego inspiracjęPraca Joe Wrobela (redukcja zapomnianegoProjekt Codeplex). W tym miejscu wykonujesz swoją pracę nad tworzeniem profilu dla dostawcy, i robi to zadanie tworzenia silnego wpisywania, skutecznie tworząc fasadę dla klasy Profile.

A teraz historia z tyłu!

Naprawdę nie lubięmagiczne struny. Są bardzo złe i mogą powodować poważne problemy z aktualizacją aplikacji. Pracując w językach takich jak PHP i ColdFusion, wiem, że łatwo jest umieścić je w swojej aplikacji i zapomnieć o nich, dopóki nie będziesz musiał ich zmienić. A potem musisz polować na każdą ich odmianę i odpowiednio je zmieniać.

.NET naprawdę nie jest o wiele lepszy, jeśli zastosujesz szablony aplikacji „z pudełka”. Wiele przykładów używa ustawień aplikacji w web.config do przechowywania różnych ustawień. Jest to naprawdę dobre miejsce do przechowywania i jest idealne do większości zastosowań. Problemy zaczynają się jednak pojawiać, gdy zaczynasz dzwonić bezpośrednio - na przykładConfigurationManager.AppSettings["MyAppSetting"]. W takim razie nie jesteś lepszy od użytkownika PHP, ponieważ wróciłeś do używania magicznych ciągów.

To jest gdziefasady Wejdź. Fasady oferują sposób na stworzenie silnie wpisanego obiektu z magicznego łańcucha w jednym miejscu, a deweloper odwołuje się do tego z pozostałej części aplikacji.

Teraz zamiast używać web.config do przechowywania moich ustawień aplikacji, używam bazy danych do przechowywania ich wszystkich. Podczas uruchamiania aplikacji pobierane są kombinacje nazw / wartości, a następnie dodawane są sekwencyjnie doConfigurationManager.AppSettings przezSet. Bez wielkiego (opróczproblem Miałem wcześniej!).

Ta „fasada aplikacji” jest dostępna dzięki mojej warstwie danych, warstwie usług i warstwie prezentacji i przechowuje takie rzeczy, jak tryb aplikacji, który punkt końcowy usługi używa yada yada yada i ogranicza potrzebę polowania na wiele magicznych ciągów, aż do dwóch magii łańcuchy - jeden (nazwa) w elewacji, a drugi (nazwa i wartość) w punkcie tworzenia (dla mnie jest to db).

Ta klasa elewacji w końcu stanie się dość duża i w końcu zmęczy mnie konieczność aktualizacji obu.

Tak więc chciałbym mieć klasę ApplicationFacade, która automatycznie generuje za każdym razem, gdy kompilacja jest wykonywana. A teraz z powrotem do początku ... Czy to możliwe?

questionAnswers(2)

yourAnswerToTheQuestion