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

知擎物联 2013-12-16 03:39:10

//基类
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()方法。
以上是否能实现?
...全文
321 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
知擎物联 2013-12-16
  • 打赏
  • 举报
回复
引用 9 楼 dongxinxi 的回复:
有继承,并且override List<Model.User> GetList() 完全可以 其实这样的问题,你自己小测试一下就知道了
嗯,已实现适配器。结贴。
被吃了的狗 2013-12-16
  • 打赏
  • 举报
回复
把GetList()方法定义成虚函数 然后A<Model.User> bll = new AUser(); bll.GetList()就是调用的AUser中的那个了。。。
  • 打赏
  • 举报
回复
有继承,并且override List<Model.User> GetList() 完全可以 其实这样的问题,你自己小测试一下就知道了
知擎物联 2013-12-16
  • 打赏
  • 举报
回复
引用 2 楼 wddw1986 的回复:
没看出来Model.TestUser和AUser哪里有关系,甚至都知道Model.TestUser是哪冒出来的。 另外,父类的实例永远不可能调用到子类的方法,因为父类的实例根本就没有子类的方法。 “父类的实例”指的是对象,而不是变量,请别误会。
关于父类,子类的问题,我对你的表述认同。 现在想想,或许该创建一个中间的类,负责适配,应该能解决问题,我去试试。
cheery_an 2013-12-16
  • 打赏
  • 举报
回复
已经override,如果是子类对象本来就调用子类的方法。
知擎物联 2013-12-16
  • 打赏
  • 举报
回复
引用 3 楼 sj490790083 的回复:
Model.TestUser和Model.AUser的关系是?自动适配,你总得有个规则吧
抱歉,写错了。 A<Model.TestUser> bll = new A<Model.TestUser>(); 应该为 A<Model.User> bll = new A<Model.User>();
知擎物联 2013-12-16
  • 打赏
  • 举报
回复
引用 2 楼 wddw1986 的回复:
没看出来Model.TestUser和AUser哪里有关系,甚至都知道Model.TestUser是哪冒出来的。 另外,父类的实例永远不可能调用到子类的方法,因为父类的实例根本就没有子类的方法。 “父类的实例”指的是对象,而不是变量,请别误会。
抱歉,写错了。 A<Model.TestUser> bll = new A<Model.TestUser>(); 应该为 A<Model.User> bll = new A<Model.User>();
sj490790083 2013-12-16
  • 打赏
  • 举报
回复
除非你让Model.TestUser:AUser
sj490790083 2013-12-16
  • 打赏
  • 举报
回复
Model.TestUser和Model.AUser的关系是?自动适配,你总得有个规则吧
cheng2005 2013-12-16
  • 打赏
  • 举报
回复
没看出来Model.TestUser和AUser哪里有关系,甚至都知道Model.TestUser是哪冒出来的。 另外,父类的实例永远不可能调用到子类的方法,因为父类的实例根本就没有子类的方法。 “父类的实例”指的是对象,而不是变量,请别误会。
知擎物联 2013-12-16
  • 打赏
  • 举报
回复
分不够可以再加,望高手指点一二。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧