Pregunta

Cuando leí al uso Clases estáticas en C #, pero la respuesta de arriba no necesariamente responde a mi pregunta. Tengo una aplicación que interactúa con un poco de hardware similar, a través de un servidor HTTP. Cada dispositivo debe iniciar sesión en y las credenciales son normalmente los mismos. Estoy usando Properties.Settings.Default.etc para manejar los parámetros globales; Sin embargo, para la facilidad puedo realizar un seguimiento de la última utilización de nombre de usuario / contraseña al iniciar sesión en un dispositivo individual. Los valores predeterminados que se pueden ajustar a través de una ventana de opciones se utilizaron por primera vez y siguen siendo los mismos a no ser cambiado a través de la ventana de opciones, a pesar de los ajustes temporales de cambiar y ser utilizado en el lugar por defecto.

De todos modos, ese es el escenario ... en lo que respecta a la pregunta, yo estoy haciendo esto:

private static class TemporarySettings
{
    public static string Username = Properties.Settings.Default["Username"].ToString();
    public static string Password = Properties.Settings.Default["Password"].ToString();
}

Es tan estúpido?

¿Fue útil?

Solución

No es estúpida, y puede resolver su problema a la perfección (si lo hace, no lo cambie). Hay algunos problemas que este enfoque podría causar en el camino, sin embargo, y es muy útil saber cuáles son.

  1. Si desea cambiar el nombre de usuario y contraseña sin necesidad de reiniciar la aplicación, no tendrá esa opción. Se puede escribir la lógica para ver el archivo de configuración para el cambio y volver a cargar los valores si cambian.
  2. Si usted quiere "reutilización" su código (especialmente si se pone más el comportamiento como la vigilancia para el cambio) para múltiples conjuntos de nombre de usuario y la contraseña, tendrá que convertir esto en una instancia.
  3. Si alguna vez quieres clases de prueba de unidad que dependen de esta clase, tendrá un momento muy difícil tropezar los valores.

Para reiterar, sin embargo, no debe rehuir la solución más simple (como se ha definido) a causa de estos potencial problemas a menos que creo que hay una posibilidad realista de que se le quemó por ellos en el futuro. De lo contrario, es probable que no sea una refactorización muy difícil cambiar a una clase de instancia después, cuando surja la necesidad.

Otros consejos

Aún mejor, los marcan readonly o propiedades de uso que sólo tienen una captadores.

Esta poniendo nombre de usuario y contraseña para el mismo valor, pero aparte de eso, no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top