継承を完全に把握しておらず、何をする必要があるかを考えすぎているようです。
基本クラスのインスタンスをパラメーターとして受け取るコンストラクターを作成しました。
基本クラスを拡張 (継承) する場合は、これを行う必要はありません。クラスをラップする場合にのみ行います。
派生クラスが基本クラスから継承されているという事実を利用して、このコンストラクターの脆弱性を軽減する方法はありますか?
はい: コンストラクターのオーバーロードを使用します。この基本クラスを考えると:
public class MyBase
{
public virtual string Name { get; set;}
}
あなたはこれを行うことができます:
public class MyExtendedClass : MyBase
{
public MyExtendedClass(string name)
{
Name = name;
}
}
ただし、コンストラクターのパラメーターが基本クラスのコンストラクターに渡される、次のようなコンストラクターのオーバーロードを活用することをお勧めします。
public class MyBase
{
public MyBase(string name)
{
Name = name;
}
public virtual string Name { get; set;}
}
public class MyExtendedClass : MyBase
{
public MyExtendedClass(string name) : base (name) { }
}
不変にしたいプロパティのコンストラクターに値を渡す傾向があります。他のものについては、インライン初期化を利用できます。
var myNewClass = new MyExtendedClass() { Name = "blah" };