首页 新闻 会员 周边

ASP.NET WebService 准备写个通用的方法 返回List<T> 却报错

0
悬赏园豆:10 [已解决问题] 解决于 2013-08-16 20:37

我想实现一个通用的WebService方法,即查询一个集合,但是集合元素类型由调用者指定。

如:我想通过该方法查询学生列表,则调用 GetList<Student>();或者查询班级列表,则调用方法写为GetList<Classic>();

以下是我写的WebService方法

[WebMethod]
public List<T> GetLogs<T>(T queryFilter, string token, int pageIndex, int pageSize, ref int totalRows) where T : class
{
return PPLog.GetLogs<T>(queryFilter, token, pageIndex, pageSize, ref totalRows);
}

但是在更新服务引用的时候报错了,如下图:

这时什么情况,求大神解决。

Byron_2015的主页 Byron_2015 | 初学一级 | 园豆:191
提问于:2013-08-15 22:14
< >
分享
最佳答案
1

当在WebService中用泛型作为返回值时,客户端引用此方法时就无法预知方法的返回值将会是List<Student>、List<Classic>.....换句话说客户端也不会自动生成Student、Classic等类型。

解决方法有很多,其中一种是先在客户端引入Student、Classic等类,并把WebService中方法返回值改为List<Object>,在客户端获取返回值时再进行类型转换

IList<Object> list= GetLogs(参数,参数,参数,);
IList<Student> studentList=new List<Student>();
foreach(Object obj in list)
    studentList.Add((Student)obj);
收获园豆:10
风尘浪子 | 菜鸟二级 |园豆:422 | 2013-08-15 22:51

看来这种想法是行不通的,已经改成json串了,在服务器端将json串统一转换成mongodb中的document了,谢谢浪子膏,啊哈哈~~

Byron_2015 | 园豆:191 (初学一级) | 2013-08-16 20:37
其他回答(1)
0

详见楼上所诉

八戒的师傅 | 园豆:1472 (小虾三级) | 2013-08-16 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册