私は変数の束を持つスーパークラスを持っています。例: (コンパイル時に)スーパークラスからの強制変数を割り当てよう
string s1= ""; string s2= ""; string s3= "";
...など
私は、これらの変数はコンパイル時に、このスーパークラスから継承するサブクラスでオーバーライド(便利割り当てられた何か)を取得することを保証したいと思います。
これを行うためのエレガントな方法はありますか?
私は変数の束を持つスーパークラスを持っています。例: (コンパイル時に)スーパークラスからの強制変数を割り当てよう
string s1= ""; string s2= ""; string s3= "";
...など
私は、これらの変数はコンパイル時に、このスーパークラスから継承するサブクラスでオーバーライド(便利割り当てられた何か)を取得することを保証したいと思います。
これを行うためのエレガントな方法はありますか?
基本クラスのすべてのコンストラクタは、パラメータとしてそれらを取る、そしてそれらのコンストラクタからそれらを設定してください:
protected BaseClass(string s1, string s2, string s3)
{
this.s1 = s1;
this.s2 = s2;
this.s3 = s3;
}
...
// Just for example
public DerivedClass(string x) : base("foo", "bar", x)
{
}
をうまくいけば、彼らはとにかく民間分野ですので、とにかく直接派生クラスでそれらを設定できませんでした。 :)
C#で仮想フィールドを持つことはできません。これが本当に必要な場合は、プロパティを使用してオーバーライドし、サブクラスでデフォルト値を指定することができます。
public class A
{
private string s1;
public virtual string S1
{
get { return this.s1; }
}
}
public class B : A
{
private string myString = "default";
public override string S1
{
get
{
return this.myString;
}
}
}
ジョン、「あなたは私にそれを賭けてください」。コメントは一日で得るのですか?ただ疑問に思う。 。 。 –