新しいイベントとメソッドを追加して、基本クラスを特殊化したいと考えています。たとえば、クラス B はクラス A から継承されます。ただし、コード内でクラス B インスタンスへの参照をその基本型 A として保持している場合、B から何かにアクセスする必要があるたびにダウンキャストする必要がありますか。 EventB1、または MethodB1 を呼び出しますか?
if (obj is B)
{
B m = (B)obj;
m.EventB1 += EventHandlerB1;
}
また、上記のように基本クラスに switch ステートメントがあるとします。B にさらにケースを追加するのは悪い習慣ですか?
Class A
{
public event EventHandler EventA1
public void MethodA1()
{
//some code
}
protected virtual void ProcessWorkItem(workItem type)
{
switch (type)
{
case workItem.A1:
..
break;
case workItem.A2:
..
break;
case workItem.A3:
..
break;
}
}
}
Class B : A
{
public event EventHandler EventB1
public void MethodB1()
{
//some code
}
protected override void ProcessWorkItem(workItem type)
{
base.ProcessWorkItem(type);
switch (type)
{
case workItem.B1:
..
break;
case workItem.B2:
..
break;
case workItem.B3:
..
break;
}
}
}