目前有个比较BT的想法。
提取类的属性名,不用反射机制,因为反射机制不能满足我的需求。反射必须要输入属性名或者属性的Index。
为了避免书写错误,不要手动输入属性名。因为不知道类里面一共有多少个属性,所以不能用Index获取属性名。例如:
class A{
private string _aName;
private int _aAge;
private string _aClass; public string aName{
get{
...
}
set{
...
}
}
public int aAge{
get{
...
}
set{
...
}
}
public string aClass{
get{
...
}
set{
...
}
}
}我想到的办法:
1)A a = new A(); 然后我可以用类似a.aName.GetName()或者a.aName.Name获取类型为string的"aName"字符串。(被自己给否了)
2)创建一个对象,根据A来动态产生一个枚举,枚举内容为A里面的所有属性,然后根据反射后的PropertyInfo获取属性名。(但是动态产生一个枚举这里不知道怎么实现了。)只有以上两个想法。但是都有问题,还请各位牛人帮忙想一下思路。谢谢了。
提取类的属性名,不用反射机制,因为反射机制不能满足我的需求。反射必须要输入属性名或者属性的Index。
为了避免书写错误,不要手动输入属性名。因为不知道类里面一共有多少个属性,所以不能用Index获取属性名。例如:
class A{
private string _aName;
private int _aAge;
private string _aClass; public string aName{
get{
...
}
set{
...
}
}
public int aAge{
get{
...
}
set{
...
}
}
public string aClass{
get{
...
}
set{
...
}
}
}我想到的办法:
1)A a = new A(); 然后我可以用类似a.aName.GetName()或者a.aName.Name获取类型为string的"aName"字符串。(被自己给否了)
2)创建一个对象,根据A来动态产生一个枚举,枚举内容为A里面的所有属性,然后根据反射后的PropertyInfo获取属性名。(但是动态产生一个枚举这里不知道怎么实现了。)只有以上两个想法。但是都有问题,还请各位牛人帮忙想一下思路。谢谢了。
为了避免书写错误,不要手动输入属性名为什么会有书写错误?
属性名你完全可以一次性全部拿到,然后列出来让用户选择即可,根本不存在出错的问题. PropertyInfo[] allProps = typeof(A).GetProperties();
foreach (PropertyInfo pi in allProps)
{
Console.WriteLine(pi.Name);
//pi.SetValue()
//pi.GetValue()
}
我也到这里了,我想用pi.Name创建一个枚举,但是不知道怎么做:(
8楼提到的两个问题我的确存在。
9楼的朋友不用激动,Java和C#我看都一个样。 JSP也搞过ASP.NET也搞过所以 唉~~灰常无语的说
还是帮忙解决一下问题吧各位,谢谢了。
http://topic.csdn.net/u/20100901/10/55c130a2-10da-493b-ae0b-cdc903d2cc08.html
只能说楼主对反射一窍不通! 而且对Python的运行机制也不怎么理解!