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

再问泛型:根据泛型自动适配子类

//基类
public class A<T> where T : Model.Base.BaseModel
{
   public virtual List<T> GetList()
   {
     //代码省略
   }
}

//子类 AUser
public class AUser : A<Model.User>
{
   public override List<Model.User> GetList()
   {
     //代码省略
   }
}
//子类 AGroup
public class AGroup : A<Model.Group>
{
   
}

如上有基类A,子类AUser,AGroup
A<Model.TestUser> bll = new A<Model.TestUser>();
当对A如上创建将泛型指定为Model.TestUser的实例时,能否使其自动适配子类AUser,从而使bll.GetList()调用的是子类AUser的 GetList()方法。
以上是否能实现?

------解决方案--------------------
有继承,并且override?List<Model.User>?GetList()
完全可以

其实这样的问题,你自己小测试一下就知道了
------解决方案--------------------
把GetList()方法定义成虚函数
然后A<Model.User> bll = new AUser();
bll.GetList()就是调用的AUser中的那个了。。。