静的クラスを使用しても大きな問題は発生しませんが、この場合はシングルトン パターンの方が適している可能性があります。
public class RegistrationConfig {
// private static instance
private static RegistrationConfig _instance = new RegistrationConfig()
// private constructor prevents the class from being instantiated from outside
private RegistrationConfig() { }
// instance public accessor
public static RegistrationConfig Current { get { return _instance; } }
public int InvitationToken { get; set; }
public int InvitationDollar { get;set; }
}
消費する:
var credit = new Credit();
credit.Token = RegistrationConfig.Current.InvitationToken;
これのバリエーションは、シングルトン パターンを実装するのではなく、.Current アクセサーを保持し、パブリック セッターを定義して、アクティブな構成を変更できるようにすることです。
public class RegistrationConfig {
// current
private static RegistrationConfig _current;
// instance public accessor
public static RegistrationConfig Current { get { return _current; } }
// public setter
public static void SetCurrent(RegistrationConfig current)
{
_current = current;
}
public int InvitationToken { get; set; }
public int InvitationDollar { get;set; }
}
次に、アプリの起動時に構成を設定します。
RegistrationConfig.SetCurrent(new RegistrationConfig() { ... });
そして消費します:
credit.Token = RegistrationConfig.Current.InvitationToken;
利点は、たとえば単体テストで使用する定義済みの値を持つインスタンスを作成できることです。