我想通过向它添加新的事件和方法来专门化一个基类。例如,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;
}
}
}