如何操作内嵌类的反射? 有类如下:class a{ public string atext = "atext"; class b { public string btext = "btext"; }}如何通过反射访问b.btext? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 需要指出的是,class b是独立的。当创建一个a的实例的时候,并不会创建一个b的实例,所以根本不存在btext。要反射访问b.btext并没有什么特别。string s = typeof(a.b).GetFields(x => x.Name == "btext").First().GetValue(); 楼主可以使用namespace来管理class 感谢两位朋友的指点,我表达有误。我的目的是遍历a中的嵌套类成员,而事前只知道其接口不知道其名称。我找到合适的方法了:Type a_type = typeof(a);MemberInfo [] info = a_type.GetNestedTypes(BindingFlags.Public | BindingFlags.Instance);//通过GetNestedTypes方法获取嵌套类信息foreach(var ns in info){ FieldInfo fi = ns.GetFields("btext"); //实例化b,ns是a的嵌套类成员,如果btext是静态成员则无需实例化,可直接引用 object ns_obj = Activator.CreateInstance(ns); //如果btext是静态成员,则可以ns.GetValue(ns) Console.WriteLine("a.b.btext = " + ns.GetValue(ns_obj));} 有个地方打错了,最后一行应为:Console.WriteLine("a.b.btext = " + fi.GetValue(ns_obj)); 使用Xml中的SelectNode和SelectSingleNode的发现 求大家给一段常用的sqlcommand代码。 线程间方法调用的问题 关于读取MARC文件的问题! C#.NET怎么样实现窗口通信 为什么无法更新oracle查询?老是返回第一次查询的结果 一个正则式的问题 如何自定义dataGridView列? 急急急!! 有谁知道怎莫在 DataGrid 中 编辑数据吗?有个问题请帮忙! 新手难题:(,怎样在通过网络传输自定义结构体啊? ListBox的项,为什么要闪烁啊 wpf 想要画一个对话框 可是尾巴那里的色不会填。。。。
当创建一个a的实例的时候,并不会创建一个b的实例,所以根本不存在btext。要反射访问b.btext并没有什么特别。
string s = typeof(a.b).GetFields(x => x.Name == "btext").First().GetValue();
我的目的是遍历a中的嵌套类成员,而事前只知道其接口不知道其名称。我找到合适的方法了:
Type a_type = typeof(a);
MemberInfo [] info = a_type.GetNestedTypes(BindingFlags.Public | BindingFlags.Instance);//通过GetNestedTypes方法获取嵌套类信息
foreach(var ns in info)
{
FieldInfo fi = ns.GetFields("btext");
//实例化b,ns是a的嵌套类成员,如果btext是静态成员则无需实例化,可直接引用
object ns_obj = Activator.CreateInstance(ns);
//如果btext是静态成员,则可以ns.GetValue(ns)
Console.WriteLine("a.b.btext = " + ns.GetValue(ns_obj));
}
Console.WriteLine("a.b.btext = " + fi.GetValue(ns_obj));