私はC#と継承に関する簡単な基本的な質問があります。基本クラスの必須セットプロパティを実装する最良の方法は何ですか?
以下の例では、Iは設定の2つの方法を示していプロパティ(CaptionDisplayTextとファーストネーム)を設定する必要があります
public abstract class BaseClass
{
private string _firstName;
protected BaseClass(string captionDisplayText)
{
this.CaptionDisplayText = captionDisplayText;
this._firstName = this.GetFirstName();
}
protected string CaptionDisplayText { get; private set; }
protected abstract string GetFirstName();
}
public class DerivedClass : BaseClass
{
protected DerivedClass():base(String.Empty)
{
}
protected override string GetFirstName()
{
return String.Empty;
}
}
アプローチ1、CaptionDisplayTextは、アプローチに対し性を紹介し、コンストラクタに設定します2では、Derivedクラスでオーバーライドされた抽象メソッドを導入しています。
私はApproach2が抽象的ではなく仮想であった場合には悪いことを知っていますが、ここでは抽象型です。つまり、基本クラスのコンストラクタの前に実行され、それは問題ありません。
私は10-15のプロパティ/フィールドを派生クラスで設定する必要がありますので、どのアプローチがより保守性が高く、読みやすく、テスト可能であるか考えています。
アプローチ1はよりテスト可能であり、アプローチ2ははるかに読みやすいと思う。アプローチ2は、モックオブジェクトが抽象メンバを実装しなければならないため、テスト可能です。
あなたの見解にはどのような方法があり、3番目の方法がありますか?
多くのおかげで、
null可能な文字列を使用します。これは、基本的に、クラスを使用した誰もがこの事実を認識するように強制します。プロパティが値を持つことを要求しようとするのは、まさに目的です。私はこれが何らかの図書館だと思いますか? –