利用反射如何获取一个类的所有字段,包块父类的字段

Jianyi 2006-07-16 08:19:05
有如下两个类:
public class ParentClass1
{
public int Id ;
}

public class Class1: ParentClass1
{
public int Name;
}

利用反射如何获取Class1的所有字段,包块父类的字段?

我用以下代码:
private const BindingFlags _flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic ;
Class1 c = new Class1();
FieldInfo[] fields = c.GetType().GetFields( _flags );

只能取到Class1本事的字段,父类的字段无法获取~

-----------
那位兄弟知道?



...全文
837 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
llf371755616 2010-05-28
  • 打赏
  • 举报
回复
Dong 2006-07-18
  • 打赏
  • 举报
回复
有点“失望”,但可以理解这种机制!
Knight94 2006-07-17
  • 打赏
  • 举报
回复
vs2003也没什么问题
飓风2000 2006-07-17
  • 打赏
  • 举报
回复
几大高手全部现身,学习中
mmens 2006-07-17
  • 打赏
  • 举报
回复
mark
Jianyi 2006-07-17
  • 打赏
  • 举报
回复
总结一下:

利用反射可以获取类,包括父类的所有public或protected成员.

但是只能获取本类的private成员,无法获取父类的private成员(包括属性,字段,方法)。

楼下的有无不同意见???

Edifier0709 2006-07-17
  • 打赏
  • 举报
回复
mark

greennetboy已经将代码都贴出来了
Jianyi 2006-07-17
  • 打赏
  • 举报
回复
谢谢楼上几位,是我错了。

父类的成员可以获取的~
zhf777 2006-07-17
  • 打赏
  • 举报
回复
mark一下
学习ing...
greennetboy 2006-07-17
  • 打赏
  • 举报
回复
public static MethodInfo[] GetMethods(Assembly a)
{
ArrayList list = new ArrayList();
MethodInfo[] methods = null;
foreach (Module m in a.GetModules())
{
foreach (Type type in m.GetTypes())
{
foreach (MethodInfo mi in type.GetMethods())
{
list.Add(mi);
}
}
}
methods = (MethodInfo[])list.ToArray(typeof(MethodInfo));
return methods;
}
获得全部方法


public static PropertyInfo[] GetPropertys(Assembly a)
{
ArrayList list = new ArrayList();
PropertyInfo[] propertys = null;
foreach (Module m in a.GetModules())
{
foreach (Type type in m.GetTypes())
{
foreach (PropertyInfo mi in type.GetProperties())
{
list.Add(mi);
}
}
}
propertys = (PropertyInfo[])list.ToArray();
return propertys;
}
获得全部属性
tiaoci 2006-07-17
  • 打赏
  • 举报
回复
谁说父类不行啊,不许误导观众哦
亮灯了 2006-07-17
  • 打赏
  • 举报
回复
支持upcc的!
Fibona 2006-07-17
  • 打赏
  • 举报
回复
up
myminimouse 2006-07-17
  • 打赏
  • 举报
回复
up
fuyiyong 2006-07-17
  • 打赏
  • 举报
回复
我的老婆叫静静 说的好像有道理!!呵
当然我的老婆不叫静静.
lingbo_wx 2006-07-17
  • 打赏
  • 举报
回复
up
速马 2006-07-17
  • 打赏
  • 举报
回复
父类的不行的嗯
MetaData只记录当前类型的信息
继承关系的内容是VTable记录的
winxieddd 2006-07-16
  • 打赏
  • 举报
回复
不会吧?代码正常呀,结果是两个值Name和Id呀,有什么错?
2005中调试
Dong 2006-07-16
  • 打赏
  • 举报
回复
FieldInfo[] fields = c.GetFields( _flags );
Jianyi 2006-07-16
  • 打赏
  • 举报
回复
up

110,536

社区成员

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

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

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