~泛型编程中的类型转换问题~~~~~~~~~~~~~~~~~我在实体层定义了两个类UserInfo和UserInfoListUserInfo用来g
~泛型编程中的类型转换问题~~~~~~~~~~~~~~~~~
我在实体层定义了两个类UserInfo和UserInfoList
UserInfo用来get、set用户信息,如姓名、密码等
UserInfoList是这样的:
C# codenamespace User.Model{ /// <summary> /// UserInfo的列表 /// </summary> public class UserInfoList : List<UserInfo> { }}
然后在数据访问层定义了一个读取数据库并返回用户列表的类Users:
C# codenamespace User.DAL{ public class Users { public List<Model.UserInfoList> MyQuery(String filter = "", SqlCommand cmd = null) { ... DataTable dt Model.UserInfoList mdls = new Model.UserInfoList(); foreach (DataRow dr in dt.Rows) { Model.UserInfo mdl = new Model.UserInfo(); mdl.uName = dr["uName"].ToString(); mdl.uPwd = dr["uPwd"].ToString(); mdl.bStop = dr["bStop"].ToString().ToLower() == "true" ? true : false; mdls.Add(mdl); } return mdls; //~~~~~~~这里报错! } }}
结果返回值上mdls报错:
怎么回事?
[解决办法]看看错误提示就知道了!!!很明显了.
返回的是类对象,定义的方法需要返回的是泛型对象!
[解决办法]傻了吧,返回类型是List<Model.UserInfoList>,mdls不是List<Model.UserInfoList>类型
List<Model.UserInfoList> list=new List<Model.UserInfoList>();
Model.UserInfoList mdls = new Model.UserInfoList();
foreach (DataRow dr in dt.Rows)
{
Model.UserInfo mdl = new Model.UserInfo();
mdl.uName = dr["uName"].ToString();
mdl.uPwd = dr["uPwd"].ToString();
mdl.bStop = dr["bStop"].ToString().ToLower() == "true" ? true : false;
mdls.Add(mdl);
}
list.Add(mdls);
应该是这样吧。
[解决办法]public class UserInfoList : ICollection<UserInfo>
不过没有什么必要。List已经实现了ICollection<UserInfo>
[解决办法]List<Model.UserInfoList> != List<UserInfo>
[解决办法]继承 。
[解决办法] public List<Model.UserInfoList> MyQuery(String filter = "", SqlCommand cmd = null)
public Model.UserInfoList MyQuery(String filter = "", SqlCommand cmd = null)