C# - Re-initialisieren einer statischen Klasse?

Habe ich eine Klasse in eine web-Anwendung, mit der ich arbeite, hält sich das client-Einstellungen. Für einige Hintergrundinformationen, die ich nicht der Eigentümer dieser Klasse, und es zu ändern ist keine option. Wir haben vor kurzem Hinzugefügt einige Logik zum speichern der Einstellungen in einer Datenbank, und ich war beauftragt, mit dem erstellen einer Seite, um Sie zu Bearbeiten, fair genug.

Hier ist mein Problem; die Einstellungen sind gehalten, die in einer statischen Klasse, und selbst statische, schreibgeschützte Eigenschaften. Zum Beispiel

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");
}

Nun, zum Beispiel, durch die Seite, die ich schrieb, ändern wir den Wert für setting2 "Happy Variable"; es speichert in der DB ganz gut, aber jetzt muss ich es zum Ausdruck in der web-app als neuen Wert. Da es eine statische readonly-Eigenschaft eine statische Klasse, die es immer nur aufgerufen wird, wenn die app erste Drähte nach oben und kann nicht manuell eingestellt werden.

Nur zu wiederholen, besitze ich das original Klasse, also ist "machen nur die Eigenschaften, die schreibbar" ist nicht (derzeit) gültige option. Normalerweise würde ich nur sprechen Sie dies immer mit meinem Chef und er würde ein Urteil Anruf und möglicherweise erlauben, mich zu ändern, die andere Klasse, aber ich bin nicht in der Lage, diesen Anruf zu machen und er ist aus dem Büro für die Woche.

Also grundsätzlich; gibt es eine Möglichkeit zum re-initialisieren einer statischen Klasse nachdem Sie eine web-Anwendung zu laufen begonnen hat? Ich brauche einfach für Sie, um neu zu laden, alle seine Eigenschaften, als ob die app wurde nur umgebaut und wieder hochgefahren.

  • Sie können es ändern, mit Reflexions-oder recycle-Prozess. Hier ist ein thread, wie zu tun, Reflexion:
  • Nur eine Randbemerkung: Sie wissen, dass alle Einstellungen(f.e. web.config) zwischengespeichert werden, eh?
  • Ist es möglich, Neustart des IIS? Starten oder Beenden eines Anwendungspools (IIS 7)
  • Am besten ist die reflektion oder Reflexion des IIS AppDomain zu bin der Statik. Beide werden im folgenden ausführlich beschrieben. Wenn Ihr Chef ruft zurück, die Genehmigung zu setzen, eine richtige Lösung und an Ort und Stelle loszuwerden, die static readonly Mitglieder. Seien Sie vorsichtig, ich habe gesehen und sehe immer noch viele "temporäre hacks", die älter sind als meiner Programmier-Karriere.
  • Wirklich, alles, was vorgeschlagen wird weit mehr als hässlich, Sie beschreibbar zu machen, ich weiß, Sie sagte, dass "nicht (derzeit) gültige option", aber es wäre die sauberste...
  • Das klingt wie ein guter Fall für erheblichen Schub zurück... Es klingt wie die Settings-Klasse ist im Besitz der intern von Ihrem Unternehmen. Wenn das der Fall ist, Schreien Schreien und tun, was notwendig ist, um das problem zu lösen richtig.
  • Ich bin damit einverstanden, dass nur das umschreiben der original-Klasse, um nicht gelesen werden-nur ist wahrscheinlich die beste Methode, aber dann wieder, die Anzahl der Eigenschaften im tatsächlichen code ist irgendwo in der 300ER, also ich kann geklebt werden, mit Reflexion sowieso, also kann es sein, fraglich. Einmal bin ich tatsächlich in der Lage, in der app und versuchen, alle Vorschläge, ich werde markieren, die ich letztendlich verwendet. Natürlich um Beleidigung Verletzung hinzuzufügen, ich bekomme gute Antworten und nun ist die DB down ist, und ich kann nicht laufen app. Dumm Montag.

InformationsquelleAutor ddietle | 2012-04-23
Schreibe einen Kommentar