我使用反射像這樣使用LINQ和反射來獲取靜態只讀域值失敗
FieldInfo[] allUnits =
new Unit().GetType().GetFields(BindingFlags.Static | BindingFlags.Public);
得到一些靜態只讀字段的值,然後我成功地得到這樣
Unit v = (Unit)allUnits[0].GetValue(null);
Console.WriteLine(v.Symbol.StartsWith("e"));
單個字段值
,它也打印「真」 那麼爲什麼這個LINQ查詢得到多個像這樣的同樣的字段值...
IEnumerable<FieldInfo> fis2 =
from fi in allUnits
where ((Unit)fi.GetValue(null)).Symbol.StartsWith("e")
select fi;
...失敗併產生一個空的結果集?
我得到的例外是System.SystemException: specified cast is not valid
是一個點在這一行中,在演員陣營和符號...((單位)fi.GetValue(空))之間。Symbol.StartsWith(「e」) – jjchiw