いくつかのフィールドと、これらのフィールドに作用するいくつかのメソッドを含む抽象基本クラスがあります。例えば:
public abstract class A
{
protected double _field;
public double SquaredField { get { return _field * _field; } }
... some other abstract methods
}
Aのすべての子がコンストラクターで_fieldを初期化することを強制したい
public class B : A
{
public B(double field)
{
_field = Math.Sqrt(field);
}
... some other method implementations
}
これを達成するための正しいパターンは何ですか?
- 編集
私がやったことは:
public abstract class A
{
protected readonly double _field;
public A(double field)
{
_field = field;
}
public double SquaredField { get { return _field * _field; } }
... some other abstract methods
}
public class B : A
{
public B(double field) : base(field)
{
}
public static B CreateNew(double val)
{
return new B(Math.Sqrt(field));
}
... some other method implementations
}