public class BaseFoo
{
private string param;
public BaseFoo(string param)
{
this.param = param;
}
}
public sealed class SingletonFoo : BaseFoo
{
static readonly SingletonFoo instance = new SingletonFoo();
static SingletonFoo()
{
}
public static SingletonFoo Instance
{
get
{
return instance;
}
}
}
この種の継承は可能ですか?基本クラスにはパラメータを持つコンストラクタが必要ですか? (パラメータが基本クラスに渡されないため、上記のコードは明らかにコンパイルされません)。コンストラクタでパラメータをとる基本クラスの継承シングルトンクラスですか?
はいの場合、どのように達成されますか?私は非シングルトン基本クラスから派生する「シングルトン」は完全にしばしば不適切に使用されるパターンの全体概念を無効にかなり確信している
public SingletonFoo (string param) : base(param)
{
}
ああ、静的なSingletonFoo()はそれをやり遂げていませんでした。明示的な静的コンストラクタの目的は、beforefieldinitのように型をマークしないようコンパイラに指示することです。これによりこの仕組みが変更されますか? –
まあ、私はかなり特定のシングルトンはとにかく封印されるべきだと確信しています。しかし、[私はテストしていません]、あなたはそのコンストラクタにも '基本'ステートメントを置くことができるはずです。しかし、間違っている可能性があります。 –
@ジョン:これは正しいアプローチですが、質問の一部にしか答えません。静的コンストラクタではなくインスタンスコンストラクタに配置し、インラインで呼び出す必要があります。私はプロセス全体を実証する答えを出しました。 –