Tous les champs d'une classe de modélisation GlobalSettings doivent-ils être statiques (centrés sur C #)?
Question
L'idée est que la classe ApplicationSettings obtiendra certaines valeurs par défaut d'un fichier de configuration / ressource et que certaines de ces options, mais pas toutes, seront ensuite appliquées à UserSettings
La solution
Vous ne devriez avoir que des champs d’instance dans une telle classe et faire de la classe entière un Singleton si nécessaire (bien que vous fassiez attention à ne pas l’exposer globalement - les singletons sont diaboliques ).
Les champs statiques ne peuvent pas être sérialisés (ce qui est important pour une classe de paramètres). Deuxièmement, en ayant des champs d'instance, vous pouvez facilement transmettre différentes instances de paramètres à différentes parties de votre application. Et l’important est de transmettre les paramètres au reste de l’application, et non de les rendre globalement visibles afin que tous les objets puissent y accéder.