Domanda

Ho letto Quando utilizzare classi statiche in C #, ma la risposta in alto non necessariamente risposto alla mia domanda. Ho un'applicazione che si interfaccia con un po 'di hardware simile, tramite un server HTTP. Ogni dispositivo deve essere registrato in e le credenziali sono normalmente uguali. Sto usando Properties.Settings.Default.etc per gestire le impostazioni di applicazione larga; tuttavia, per la facilità tengo traccia dell'ultimo utilizzato username / password quando si accede singolarmente in un dispositivo. Le impostazioni predefinite che sono impostabile attraverso una finestra delle opzioni vengono utilizzate prima e rimangono gli stessi, a meno modificati tramite la finestra delle opzioni, nonostante le impostazioni temporanee cambiare e di essere utilizzato nel default vece.

In ogni caso, questo è lo scenario ... per quanto riguarda la domanda, sto facendo questo:

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

E 'così stupido?

È stato utile?

Soluzione

Non è stupido, e può risolvere il tuo problema perfettamente (se lo fa, non cambiarla). Ci sono alcuni problemi che questo approccio potrebbe causare lungo la strada, però, e aiuta a sapere che cosa quelli sono.

  1. Se si desidera cambiare il nome utente e la password senza riavviare l'applicazione, non avrete che l'opzione. È possibile scrivere logica per vedere il file di configurazione per il cambiamento e ricaricare i valori se cambiano.
  2. Se si vuole "riutilizzo" il codice (soprattutto se si mette un comportamento più simile monitoraggio per il cambiamento) per più set di username e password, è necessario convertire questo a un'istanza.
  3. Se vi capitasse di voler classi di unit test che dipendono da questa classe, si avrà un momento molto difficile sradicamento dei valori.

Per ribadire, però, non si deve rifuggire dalla soluzione più semplice (come è stato definito) a causa di questi potenziale problemi a meno che non pensi che ci sia una reale possibilità che ti verrà bruciato da loro in futuro. In caso contrario, probabilmente non sarà un refactoring molto difficile da passare a una classe di un'istanza più tardi, quando si presenta la necessità.

Altri suggerimenti

Ancora meglio, segnano li readonly o utilizzare le proprietà che hanno solo un getter.

Si sta impostando username e password per lo stesso valore, ma a parte questo, no.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top