一个实体类映射,对它其中类型为枚举的属性进行赋值
//有一个实体类Member
public class Member
{
public Member() { }
private string _id;
private string _name;
private SexType _sex;
public string ID()
{
get{ return _id; } set { _id=value; }
}
public string Name()
{
get{ return _name; } set { name=value; }
}
public SexType Sex()
{
get{ return _sex; } set { _sex=value; }
}
}
//有一个枚举
public enum EduLevelType
{
man = 0,
woman = 1
}
//对枚举赋值的一个通用方法(其实还有很多操作,这里简化了)
public void Source(Object obj,int intID)
{
Type t = obj.GetType();
System.Reflection.PropertyInfo[] PS = t.GetProperties();
int ID;
for (ID = 0; ID < PS.Length; ID++)
{
//当属性是枚举类型时
if(PS[ID].PropertyType.IsEnum)
{
//对枚举类型的属性Sex进行赋值,怎样实现呢
//如果直接这样做,是不行的:PS[ID].SetValue(obj, intID, null);
}
}
方法引用:Member mem = new Member();
Source(mem ,1);
结果应该是:mem.Sex = woman;
------解决方案--------------------写的不错
------解决方案--------------------枚举能赋值?
------解决方案--------------------if(PS[ID].PropertyType.IsEnum)
此时,已判断为枚举类型了.赋值再赋int肯定不行吧?你试下,直接赋值枚举值.
比如:
EduLevelType.woman
------解决方案--------------------给枚举赋值是不提倡用的。
------解决方案--------------------枚举赋值是不提倡用的。
------解决方案--------------------没办法,公司一定要用枚举,用那三层架构写的代码太多了,效率太低,自己就想写几个通用的方法
System.Reflection.PropertyInfo[] PS = t.GetProperties();
=====
1。
丫,反射都出来了
2。
代码多?
你应该考虑使用,代码生成工具,
3。
而反射通常正是给这些开发工具、IDE使用的,而不是用在实际应用系统中的,虽然你这样省了敲代码的力气,但是代码的是性能的大大降低,
4。
想想,这个反射得由多少方法来调用啊,再加上每个方法中 while(xxxDataReader.Read()) ...一循环,服务器负载可想而知,
也许你会告诉我,不用考虑,硬件资源...