內最近我發現自己寫的類似於類很多:訪問「這個」靜態代碼塊
public class MyTypeCodes
{
public static MyTypeCode E = new MyTypeCode{ Desc= "EEE", Value = "E" };
public static MyTypeCode I = new MyTypeCode { Desc= "III", Value = "I" };
private static readonly Lazy<IEnumerable<MyTypeCode>> AllMyTypeCodes =
new Lazy<IEnumerable<MyTypeCode>>(() =>
{
var typeCodes = typeof(MyTypeCodes)
.GetFields(BindingFlags.Static | BindingFlags.Public)
.Where(x => x.FieldType == typeof (MyTypeCode))
.Select(x => (MyTypeCode) x.GetValue(null))
.ToList();
return typeCodes;
});
public static IEnumerable<MyTypeCode> All
{
get { return AllMyTypeCodes.Value; }
}
}
如果您的new Lazy<IEnumerable<MyTypeCode>>(() =>
我特別需要做的typeof(MyTypeCodes)
即使我在裏面發現裏面類MyTypeCodes。有沒有什麼辦法可以在沒有特別需要致電typeof()
的情況下爲我專門講授的課程?如果這是一個常規的方法,我會this.GetType()
顯然不工作(出於某種原因)靜態。
僅供參考 - 你應該使用'ToList()'在這裏'IEnumerable'序列......否則,每次調用將通過反射再次運行。 –