C# 泛型方法中,如何调用 类 参数中的 静态方法

publicstaticList<T>getEntityList<T>(DataTabledt)whereT:class{List<T>list=newList<T>()... public static List<T> getEntityList<T>(DataTable dt)
where T:class
{
List<T> list = new List<T>();

foreach( DataRow dr in dt.Rows )
{
list.Add(T.getEntityByDataRow(dr));////这里出错了
}
return list;
}
T 是一个类 作为参数 如何使用这个类里面的静态方法
T.getEntityByDataRow(dr) 这样写出错了
请问大神们了
展开
 我来答
百度网友d242235
2012-12-10 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:820万
展开全部
很明显,你的函数要做的是一个把弱类型的DataTable映射到强类型List<T>的ORM功能,但GetEntityByDataRow这个映射函数根本不应该定义到T中,你可以单独写一个静态类,里面使用反射技术,完成反射就可以了。
追问
你明白了我地意思了,但系我部太会反射,我现在就想用反射去搞,有无好的列子,谢谢了
candy91139
2012-12-10 · TA获得超过1607个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:184万
展开全部
不知道你的.getEntityByDataRow()的返回类型是什么,我写的一般都是返回实体,所以这里的DR我觉得是不是应该用实体,还有DR声明之后并没有赋值所以肯定会报错,你可以这样写
T t=new T();
t.属性名=dr[index];
list.Add(T.getEntityByDataRow(t));
追问
返回的是一个  T 类型 的实体类,是T 类  中的一个 静态方法,用sql  去数据库得到datatable 后转换成 对应实体的方法,但系好多类中都有这个方法。所以无法确定是哪一个类,我就打算用泛型来解决
追答
你把foreach里的改写成下面这样试试

foreach( DataRow dr in dt.Rows )
{
T t=new T();
t.属性名=dr[index];
list.Add(T.getEntityByDataRow(t));
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-10
展开全部
list.Add(类名.getEntityByDataRow(dr));
追问
现在的问题系没有确定  类名  所以我才要用到泛型来解决
追答
请问,如果我调用这个方法,给T的类型是Datatable,有这个方法吗?
或者传个别的class没这个方法怎么办?
lz最好是写个interface,传过来的T都必须继承interface,然后(T as Interface).方法名()就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
piyrw0
2012-12-10 · TA获得超过141个赞
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:102万
展开全部
试试
last.Add(((dynamic)T).GetEntityByDataRow(dr));
追问
不行啊
追答
因为是静态调用,从没有试过使用dynamic
dynamic通常是当你无法明确类的类型,但确定有这个方法是存在的时候使用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-10
展开全部
既然在同类中,直接写方法名不行么?
追问
不是同类中的,是好多个实体类都有这个getEntityByDataRow() 静态方法。如果不用泛型次次都要写
foreach( DataRow dr in dt.Rows )
{
list.Add(T.getEntityByDataRow(dr));////这里出错了
}
我不想这样,所以用泛型
追答
报的什么错误?
这个方法的返回类型是什么?既然你的集合list 存放的是类,,那你的方法返回类型要是 实体类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式