我正在尝试针对枚举类型进行扩展,但似乎它仅适用于枚举中的项目,而不适用于整个枚举本身。
枚举:
public enum Demo
{
ValueOne,
ValueTwo,
ValueThree
}
扩展名:
public static IEnumerable<TEnum> AsEnumerable<TEnum>(this TEnum source) where TEnum : Enum, IConvertible
{
if (!typeof(TEnum).IsEnum)
{
throw new ArgumentException();
}
foreach(TEnum item in Enum.GetValues(typeof(TEnum)))
{
yield return item;
}
}
此作品:
var demo = Demo.ValueOne.AsEnumerable();
但我正在寻找:
var demo = Demo.AsEnumerable();
我必须为此创建一个单独的方法,从而产生如下语法:
var test = EnumExtensionHelper<BaseAttributes>.AsEnumerable();
但是直接在对象上使用扩展方法会感觉更好
多亏了它的解决。答案是
“您不能创建类型扩展方法,即,通过使用添加“实例”方法来扩展实例的方式来添加类型。扩展方法需要一个实例。 -反射