首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

~泛型编程中的类型转换有关问题~

2012-04-22 
~泛型编程中的类型转换问题~~~~~~~~~~~~~~~~~我在实体层定义了两个类UserInfo和UserInfoListUserInfo用来g

~泛型编程中的类型转换问题~~~~~~~~~~~~~~~~~
我在实体层定义了两个类UserInfo和UserInfoList
UserInfo用来get、set用户信息,如姓名、密码等
UserInfoList是这样的:

C# code
namespace User.Model{    /// <summary>    /// UserInfo的列表    /// </summary>    public class UserInfoList : List<UserInfo>    {    }}


然后在数据访问层定义了一个读取数据库并返回用户列表的类Users:
C# code
namespace 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报错:

引用
错误1无法将类型“User.Model.UserInfoList”隐式转换为“System.Collections.Generic.List<User.Model.UserInfoList>”


怎么回事?

[解决办法]
看看错误提示就知道了!!!很明显了.
返回的是类对象,定义的方法需要返回的是泛型对象!
[解决办法]
傻了吧,返回类型是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)

热点排行