C#反思我有自定义枚举类:与枚举阵列
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);
这可能吗?
你是什么意思'获得这个领域的价值'?简单地阅读该数组,然后按照你的意愿做 –
这里适合使用'[Flags]'的声音:http://msdn.microsoft.com/en-us/library/system.flagsattribute.aspx –
你有堆栈吗?跟踪来验证NullReferenceException来自哪里?它看起来可能来自您的DeviceCapabilities属性中的逻辑,或来自对象中的另一个属性。 –