Mam zajęcia w aplikacji internetowej, nad którą pracuję, która zawiera ustawienia klienta. Na pewnym tle nie jestem właścicielem tej klasy, a jej zmiana nie jest opcją. Niedawno dodaliśmy trochę logiki do przechowywania ustawień w bazie danych, a zadanie polegało na utworzeniu strony, która je edytowała, wystarczająco dobrze.C# - Ponownie zainicjować klasę statyczną?
Oto mój problem; ustawienia są przechowywane w klasie statycznej i same są statycznymi właściwościami tylko do odczytu. Na przykład:
public static class Settings
{
public static readonly setting1 = SettingmanagerClass.GetSetting("setting1");
public static readonly setting2 = SettingmanagerClass.GetSetting("setting2");
public static readonly setting3 = SettingmanagerClass.GetSetting("setting3");
}
Teraz, na przykład, przez stronę, którą napisałem, zmieniamy wartość ustawienia2 na "Happy Variable"; zapisuje się do bazy danych w porządku, ale teraz potrzebuję, aby znalazła się w aplikacji internetowej jako nowa wartość. Ponieważ jest to statyczna właściwość readonly klasy statycznej, jest ona wywoływana tylko wtedy, gdy aplikacja jest najpierw podłączona i nie może być ustawiona ręcznie.
Powtarzam tylko, nie jestem właścicielem oryginalnej klasy, więc "po prostu ustaw właściwości do zapisu" nie jest (obecnie) prawidłową opcją. Zwykle po prostu rozmawiałbym o tym z moim szefem, a on wygłosiłby wezwanie do sądu i ewentualnie pozwoliłby mi zmodyfikować drugą klasę, ale nie jestem w stanie wykonać tego połączenia, a on jest poza biurem przez cały tydzień.
W zasadzie; czy istnieje sposób na ponowne zainicjowanie klasy statycznej po uruchomieniu aplikacji internetowej? Potrzebuję go do przeładowania wszystkich jego właściwości, tak jakby aplikacja została ponownie przebudowana i uruchomiona ponownie.
Możesz to zmienić poprzez odbicie lub recykling procesu. [Tutaj jest wątek] (http://stackoverflow.com/questions/934930/can-i-change-a-private-readonly-field-in-c-sharp-using-reflection) o tym, jak zrobić refleksję: – zeal
Tylko jedna uwaga: Wiesz, że wszystkie ustawienia (np. Z web.config) są w pamięci podręcznej i tak? –
Czy można ponownie uruchomić usługi IIS? [Uruchom lub zatrzymaj pulę aplikacji (IIS 7)] (http://technet.microsoft.com/en-us/library/cc732742 (v = WS.10) .aspx) – Steve