最近、次のようなクラスをたくさん書いていることに気づきました。
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; }
}
}
その中に気付いた場合は 、クラス MyTypeCodes の中にいるにもかかわらず、new Lazy<IEnumerable<MyTypeCode>>(() =>
具体的に行う必要があります。私が特に内部にいるクラスtypeof(MyTypeCodes)
を特に呼び出す必要なく、これを書く方法はありますか? typeof()
これが通常の方法である場合、this.GetType()
明らかに(何らかの理由で)静的では機能しません。