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屬性中的邏輯,或來自對象中的另一個屬性。 –