我已经扩展了Enum类型,如下所示:
public class Enum<TEnum> where TEnum : notnull, Enum, IConvertible {
public static int Length => Enum.GetNames(typeof(TEnum)).Length;
}
我还扩展了枚举,如下所示:
public static class EnumExt {
public static int EnumCount<TEnum>(this TEnum val) where TEnum : notnull, Enum {
// return Enum.GetNames(val.GetType()).Length;
return Enum<TEnum>.Length;
}
}
我的主窗口看起来像这样:
public partial class MainWindow : Window {
private void PerformTest(Enum? ptr) {
if(ptr is null) {
Debug.WriteLine("Error: There is no value selected.");
} else {
Debug.WriteLine("Count: {0}", ptr.EnumCount());
}
}
}
我需要能够从EnumExt的方法访问类Enum<;TEnum>;中的静态方法.如果我取消对EnumExt中注释行的注释,它会工作得很好.问题是,这一行只代表许多方法中的许多行,我不想为两个类全部重写它们,也不想在PerformTest()中编写一个大的SELECT来涵盖每种可能的Enum类型.速度或内存其实不是什么大问题,但我需要在不知道预先使用的特定枚举的情况下工作(它们将在编译时知道,如果需要的话,可以使用IDK),这就是我使用Enum的原因?在PerformTest()中.我花了太长时间试图弄清楚这件事.请帮帮忙.