首页 新闻 搜索 专区 学院

反射有关的问题? 在线等,谢谢

0
[待解决问题]
var members = Activator.CreateInstance(typeof(T).GetNestedType("_"));


请问怎么获取members下面的静态实例成员啊?

天空海阔的主页 天空海阔 | 初学一级 | 园豆:6
提问于:2011-11-11 14:41
< >
分享
所有回答(2)
1
members.GetType().GetFields(BindingFlags.Static | BindingFlags.NonPublic);

得到FieldInfo数组,要获取到值,就对某一个FieldInfo: f.GetValue(members);

水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-11 14:56

 

members.GetType().GetMembers(BindingFlags.Static | BindingFlags.Public);
{System.Reflection.MemberInfo[18]}
[0]: {SAK.ORM.Fields.Field Title}
[1]: {SAK.ORM.Fields.Field ArticleID}
[2]: {SAK.ORM.Fields.Field Content}
[3]: {SAK.ORM.Fields.Field Description}
[4]: {SAK.ORM.Fields.Field ImageUrl}

到是能获取到,但是是获取到的成员 都是Field类型字段,

而我已经创建了"T._"的实例,  怎么能获取到这些实例字段?

 这个是members下面的,已经被实例化了的

 

 

支持(0) 反对(0) 天空海阔 | 园豆:6 (初学一级) | 2011-11-11 15:06

@天空海阔: 你获取到了这么多字段是一个FieldInfo[]数组,每个成员是一个FieldInfo。用它的GetValue方法,刚才我已经讲过了。代码:

var fieldInfos = members.GetType().GetMembers(BindingFlags.Static | BindingFlags.Public);

foreach(var field in fieldInfos)
{
object value = field.GetValue(instance); //instance就是你创建的那个实例
}
支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-11 15:22
0

谢谢,自己解决啦

天空海阔 | 园豆:6 (初学一级) | 2011-12-15 12:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册