MemberInfo FieldInfo之间的区别是什么

时间:2016-03-10 09:22:50

标签: c# .net vb.net

我正在编写一个扩展来获取Enum的描述和其他属性。 我看过使用FieldInfo和其他人使用MemberInfo的示例。有人可以解释一下我们应该使用哪种差异以及何时会产生差异?

2 个答案:

答案 0 :(得分:4)

MemberInfoFieldInfoPropertyInfo的抽象基类。因此,当您想要使用FieldInfo访问字段时,对于属性需要PropertyInfo

编辑:要在枚举值上设置属性,可以使用:

var attr = typeof(MyEnum).GetField(myEnumValue.ToString()).GetCustomAttributes(typeof(Description), false);

if (attr.Length > 0) return attr[0].Description;

在这种情况下,您也可以使用GetMember代替GetFieldGetCustomAttributes定义了MemberInfo,因此FieldInfo和{{1}都提供了PropertyInfo }}。

答案 1 :(得分:4)

FieldInfo 类派生自 MemberInfo 类,它具有仅针对字段的其他方法/属性。 MemberInfo 类更通用,它可以描述构造函数,属性,方法,事件而不仅仅是字段。

我假设有些人根据要求使用 FieldInfo 和一些 MemberInfo 。在某些情况下, MemberInfo 提供的信息已足够,有些则不然。