子类转List集合

wvtjplh 2016-09-25 04:23:06
class A继承自抽象类 B
我把类a获取的datatable转为集合,有没有什么方法可以不用每次先去判断类型手工写大量的代码?

List<抽象类> list=ListHelp.GetList<抽象类>(dt); 报错
这个抽象类如何变成具体的子类的class

List<A类> list=ListHelp.GetList<A >(dt); 就没问题,但是这样每次都要去判断是什么子类
...全文
297 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2016-09-26
  • 打赏
  • 举报
回复
问题出在 GetList 方法。 要看报什么错。
threenewbee 2016-09-26
  • 打赏
  • 举报
回复
list.Select(x => (具体的类)x)
  • 打赏
  • 举报
回复
如果抽象类设计得足够好,在使用时就不需要去判断具体类型了,反过来,如果需要频繁判断类型,你的抽象类 - 子类设计得肯定有问题
游离失所 2016-09-26
  • 打赏
  • 举报
回复
还有一点。。 2.) List<抽象类> list=ListHelp.GetList<抽象类>(dt); 报错 这个抽象类如何变成具体的子类的class 这里的泛型如果是抽象类, 是不符合的。。 因为抽象类是做基类用的,不可以实例化。。既然没办法实例化,必须通过派生类去实例化,然后再as成这个抽象类。。而这个GetList又没有指定实例化的派生类的类型。。 1.要么改这个方法。 2.不要用抽象类做基类,去掉abstract
游离失所 2016-09-26
  • 打赏
  • 举报
回复
1.) class A继承自抽象类 B 我把类a获取的datatable转为集合,有没有什么方法可以不用每次先去判断类型手工写大量的代码? 可以用泛型+反射。。现阶段你了解这个就可以了。。 你要是更凶残点可以用DynamicMethod去动态的编织一个方法去进行转换。。 2.) List<抽象类> list=ListHelp.GetList<抽象类>(dt); 报错 这个抽象类如何变成具体的子类的class 如果你用了泛型+反射的方式去构建GetList方法。肯定就不会报错了。。 因为A是B的派生类。。基类B的成员只会比A少,不会比A多。。也就是说,A有的B都有。。而B有的A不一定有。 那dt竟然可以转A。那必然可以转B了。 3.)List<A类> list=ListHelp.GetList<A >(dt); 就没问题,但是这样每次都要去判断是什么子类 回归问题1 你也可以把代码发出来,自己手动硬编码一些模拟数据,这样我们才能更好的帮助你
plcly1 2016-09-25
  • 打赏
  • 举报
回复
抽象类不能实例化

111,128

社区成员

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

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

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