【发布时间】:2013-01-09 17:03:38
【问题描述】:
我有一个自定义枚举类:
public enum Capabilities{
PowerSave= 1,
PnP =2,
Shared=3, }
我的班级
public class Device
{
....
public Capabilities[] DeviceCapabilities
{
get { // logic goes here}
}
有没有办法在运行时使用反射来获取该字段的值? 我尝试了以下但得到空引用异常
PropertyInfo[] prs = srcObj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo property in prs)
{
if (property.PropertyType.IsArray)
{
Array a = (Array)property.GetValue(srcObj, null);
}
}
编辑:感谢您的回答,我真正需要的是一种无需指定枚举类型即可动态获取值的方法。 类似的东西:
string enumType = "enumtype"
var property = typeof(Device).GetProperty(enumType);
这可能吗?
【问题讨论】:
-
get values of this field是什么意思?只需读取该数组并用它做你想做的事 -
听起来像
[Flags]在这里很合适:msdn.microsoft.com/en-us/library/system.flagsattribute.aspx -
您是否有堆栈跟踪来验证 NullReferenceException 的来源?看起来它可能来自您的 DeviceCapabilities 属性中的逻辑,或者来自您对象中的另一个属性。
标签: c# .net reflection enums