日期:2014-05-17  浏览次数:20985 次

c#子类重写父类某个protected成员的方法问题
简述
A:B
B{
 protected C c1 = new C();
}
C
{
 public virtual void function()
{
}
}
问题,如何在A里重写 function()
谢谢
继承 重写 父类成员 成员函数重写 深度重写

------解决方案--------------------
你这个不叫重写了.
你可以再弄一个C1:C 类,B 里用C,A里用C1
------解决方案--------------------
无法重写,根本就不是继承关系。
------解决方案--------------------
从设计上看, A继承B不继承C, 所以重写C的virtual方法做不到.
想到一个很土的解决方法. 在C中为A加入另外一个方法(或者用扩展方法), 声明与原virtual方法很接近. 然后, 在A自己的方法中, 去调用新方法, 如果B调用了老方法, 那就在A中重写B的方法.