13,190
社区成员
发帖
与我相关
我的任务
分享
public class AView
{
public A A;
public virtual void Show(){ //显示A
}
}
public class AViewChild : AView
{
public Achild B;
public override void Show(){ //显示AChild
}
}
public class A
{
}
public class Achild : A
{
}
public class AView
{
public A A; //只保留这个
public virtual void Show(){ //显示A
}
}
public class AViewChild : AView
{
public override void Show(){
Achild test = A as AChild //强制转为Achild
}
}
public class AView
{
public A A;
public void Show(){ //显示A
Action p = GetShowAction(A);
p();
}
}
这个 GetShowAction 如何实现,你可以自己想办法。这里只是说明,你的AView不是弄到什么子类去实现功能,而是在AView中就就地实现。
AViewChild test = new AViewChild();
test.A = new AChild();
而在界面中都有:
class AViewChild{
public void Show()
{
AChild a = A as AChild;
}
public void Test()
{
AChild a = A as AChild....
}
后面的显示部分子类代码中也全都是这种AChildChild... a = A as AChildChild..
感觉用的时候没什么问题,但我总觉得怪怪的。。。。
public class AView<T>
where T:A
{
public T A;
public virtual void Show(){ //显示A
}
}
public class AViewChild : AView<Achild>
{
public override void Show(){
//此处不用转换了,A字段已经是Achild类型了
}
}
public class A
{
public virtual void Show(){ //显示A
}
}
public class AChild : A
{
public override void Show(){
}
}