C# 怎样循环类里面的属性?

mohugomohu 2008-11-19 11:28:56
                        StuInfoEntity entity = new StuInfoEntity();
entity = new StuInfoEntity();
entity.Id = int.Parse(dt.Rows[i]["ID"].ToString());
entity.Number = dt.Rows[i]["Number"].ToString();
entity.Name = dt.Rows[i]["Name"].ToString();
entity.Sex = dt.Rows[i]["Sex"].ToString();
entity.Address = dt.Rows[i]["Address"].ToString();
entity.PostNum = dt.Rows[i]["PostNum"].ToString();
entity.PhoneNum = dt.Rows[i]["PhoneNum"].ToString();
entity.Political = dt.Rows[i]["Political"].ToString();
entity.IdCard = dt.Rows[i]["IDCard"].ToString();
entity.IsThreeGood = dt.Rows[i]["IsThreeGood"].ToString();
entity.CountryScholarship = dt.Rows[i]["CountryScholarship"].ToString();
entity.InstituteScholarship = dt.Rows[i]["InstituteScholarship"].ToString();
entity.Reward = dt.Rows[i]["Reward"].ToString();
entity.Punish = dt.Rows[i]["Punish"].ToString();
entity.ClassId = int.Parse(dt.Rows[i]["ClassId"].ToString());
entity.IsPoor = dt.Rows[i]["IsPoor"].ToString();
entity.IsCountrySide = dt.Rows[i]["IsCountrySide"].ToString();
entity.Note = dt.Rows[i]["Note"].ToString();


StuInfoEntity 这个类有好嘿多属性啊,写到我晕完去!怎么循环啊!
...全文
648 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangtao_200 2010-03-15
  • 打赏
  • 举报
回复
学习学习!!
qly1118 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovehongyun 的回复:]
如需要阅读该回复,请登录或注册CSDN!
[/Quote]顶
mohugomohu 2008-11-19
  • 打赏
  • 举报
回复
如果只是实体类的属性是string类型倒是没问题,但如果是别的类型就不得了。
zhnzzy 2008-11-19
  • 打赏
  • 举报
回复

if(propertyInfo.PropertyType.IsEnum)
{
propertyInfo.SetValue(targetObj,Enum.ToObject(propertyInfo.PropertyType,reader.GetValue(i)),null);
}

zhnzzy 2008-11-19
  • 打赏
  • 举报
回复
想省事只能用反射了,不过你需要考虑BOOL型的特殊情况,以前写过,但是效率并不高
niitnanfeng 2008-11-19
  • 打赏
  • 举报
回复
学习了
lovehongyun 2008-11-19
  • 打赏
  • 举报
回复
上边的代码多了一个大括号,自己去了就行了.最下边那个.

另外你可以看下这个文章:
http://blog.csdn.net/hyde82/archive/2006/08/25/1116520.aspx
lovehongyun 2008-11-19
  • 打赏
  • 举报
回复
 public class Program
{

static void Main(string[] args)
{
StuInfoEntity obj = new StuInfoEntity();
Type t = typeof(StuInfoEntity);

PropertyInfo[] myPropertyInfo;
// Get the properties of 'Type' class object.
myPropertyInfo = t.GetProperties();
for (int i = 0; i < myPropertyInfo.Length; i++)
{
myPropertyInfo[i].SetValue(obj, i.ToString(), null);
Console.WriteLine(myPropertyInfo[i].GetValue(obj,null));
}


Console.ReadKey();
}
}

public class StuInfoEntity
{
public string a, b, c;
public string A
{
set
{
a = value;
}
get
{
return a;
}
}

public string B
{
set {
b = value;
}
get
{
return b;
}
}

public string C
{
set
{
c = value;
}
get
{
return c;
}
}
}
}
Ssmell 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinaicm 的回复:]
PropertyInfo[] propertys = StuInfoEntity().GetType().GetProperties();

把属性取出来,然后遍历赋值.
[/Quote]
这样做能干什么?
jzywh 2008-11-19
  • 打赏
  • 举报
回复
ORM的原型
panw520 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chinaicm 的回复:]
PropertyInfo[] propertys = StuInfoEntity().GetType().GetProperties();

把属性取出来,然后遍历赋值.
[/Quote]
up
chinaicm 2008-11-19
  • 打赏
  • 举报
回复
PropertyInfo[] propertys = StuInfoEntity().GetType().GetProperties();

把属性取出来,然后遍历赋值.
gogogo 2008-11-19
  • 打赏
  • 举报
回复
本来就是一个这么多属性的类,安全的做法就是楼主这样一个个来写,不要嫌麻烦,其他的方法其实综合起来都不怎么好(效率,存储,代码清晰度),也就是少几行源代码,实在想节省点代码,就把这些语句写在一个函数里,以后用到的时候一个函数搞定。
lovehongyun 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mohugomohu 的回复:]
如果只是实体类的属性是string类型倒是没问题,但如果是别的类型就不得了。
[/Quote]

其它类型也是能赋值的.
SetValue方法的参数是object类型,不是只是string
lovehongyun 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mohugomohu 的回复:]
如果只是实体类的属性是string类型倒是没问题,但如果是别的类型就不得了。
[/Quote]
反射不是最好的解决方案.
你还是不要那样搞了.
只是知道一下就可以了.

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧