Tengo una clase en una aplicación web en la que estoy trabajando que guarda la configuración del cliente. Para algunos antecedentes, no soy dueño de esta clase y cambiarla no es una opción. Recientemente agregamos un poco de lógica para almacenar la configuración en una base de datos, y me asignaron la tarea de crear una página para editarlos, lo suficiente.C# - ¿Reiniciar la clase estática?
Aquí está mi problema; las configuraciones se mantienen en una clase estática, y son propiedades estáticas de solo lectura. Por ejemplo
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");
}
Ahora, por ejemplo, a través de la página que escribí, cambiamos el valor para setting2 a "Happy Variable"; se guarda bien en el DB, pero ahora necesito que se refleje en la aplicación web como el nuevo valor. Como es una propiedad de solo lectura estática de una clase estática, solo se llama cuando la aplicación se conecta por primera vez y no se puede configurar manualmente.
Solo para reiterar, no poseo la clase original, por lo que "simplemente haga que las propiedades sean grabables" no es (actualmente) una opción válida. Normalmente me gustaría hablar de esto con mi jefe y él haría una llamada de juicio y posiblemente me permita modificar la otra clase, pero no estoy en condiciones de hacer esa llamada y él estará fuera de la oficina por una semana.
Así que básicamente; ¿Hay alguna manera de reiniciar una clase estática una vez que una aplicación web ha comenzado a ejecutarse? Solo necesito que vuelva a cargar todas sus propiedades como si la aplicación acabara de reconstruirse y se iniciara de nuevo.
Puede cambiarlo con reflexión o reciclar el proceso. [Aquí hay un hilo] (http://stackoverflow.com/questions/934930/can-i-change-a-private-readonly-field-inc-c-sharp-using-reflection) sobre cómo hacer la reflexión: – zeal
Solo una nota al margen: ¿sabe que todas las configuraciones (fe de web.config) están en caché de todos modos? –
¿Es posible reiniciar su IIS? [Iniciar o detener un grupo de aplicaciones (IIS 7)] (http://technet.microsoft.com/en-us/library/cc732742 (v = WS.10) .aspx) – Steve