我想实现一个通用的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);
}
但是在更新服务引用的时候报错了,如下图:
这时什么情况,求大神解决。
当在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);
看来这种想法是行不通的,已经改成json串了,在服务器端将json串统一转换成mongodb中的document了,谢谢浪子膏,啊哈哈~~
详见楼上所诉