读书人

用实体类遇到的郁闷有关问题

发布时间: 2011-12-30 23:30:45 作者: rapoo

用实体类遇到的郁闷问题
我定义了一个可视化的实体类:UserInfo
[Serializable]
public class UserInfo
{
private string id;
private string name;
private string password;

public UserInfo() { }

public UserInfo(string id, string name)
{
this.id = id;
this.name = name;
}

public UserInfo(string id, string name, string password)
{
this.id = id;
this.name = name;
this.password=password;
}
......

}

接着在一个实现类里返回序列化的实体类:
public IList <UserInfo> GetUsers()
{
SqlDataReader dr;
IList <UserInfo> users = new List <UserInfo> ();
strSql = "Select Staff_Id,Staff_Name,IsActive From tblUsers ";

DB.RunSql(strSql, out dr);

while (dr.Read())
{
UserInfo aUser = new UserInfo(dr.GetString(0), dr.GetString(1));
users.Add(aUser);
}

dr.Close();

return users;
}

谁知道返回的结果有3个字段:Id,Name,Password;但我只想返回前两个字段而已呀?请问这如何解决?不会又要定义一个只有两个字段的实体类吧?

请高兴解疑,谢谢!

[解决办法]
。。!!
Password你不想用就不用呗
难道你的意思是:要是没有赋值该实体就没有这个属性?
------解决方案--------------------


不大明白,不过可能就是的,因为在new 一个新List时,结构就已经定了呀,所以为了满足这结构,一定会把所以的字段都加上的吧!
高手去哪了?
[解决办法]
对阿,那你就可以再加上个字段,然后password属性里通过新添加的字段控制password字段显示与否

哎,最近怎么了,连话都说不利索了。。。。。
[解决办法]
[Serializable]
public class MyObject
{
public int n1;
[NonSerialized] public int n2;//使用NonSerialized关键字指定该字段不参与序列化
public String str;
}

[解决办法]
学习
帮顶
[解决办法]
有没有高手指点呀.
我想只能用两个类(可以是继承)来实现吧
一个包函Password ,一个没有
[解决办法]
//之前我也是和你同样的想法,不用第3种构造函数就可了.但当我把返回的实体集合绑定到GridView时,实体类的所有属性(字段)都会显示出来.您可以亲自试试.
--------------------------

楼主,我总算是明白你的意思了,你是要把实体类直接绑定到GridView控件上,如果有Password字段的话那就会显示这一列了,而这是你所不期望的。
假设我理解是正确的,那就是楼主你的问题了,我记得在GridView控件上,如果不使用自动生成列的功能,你可以指定要显示哪些列,而这些列绑定到哪个属性。

[解决办法]
好象只能取整个实体类,不能取部分

读书人网 >C#

热点推荐