如何进行扩展以C#中的枚举为目标[duplicate]

问题描述 投票:1回答:1

我正在尝试针对枚举类型进行扩展,但似乎它仅适用于枚举中的项目,而不适用于整个枚举本身。

枚举

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();

但是直接在对象上使用扩展方法会感觉更好

c# generics enums extension-methods ienumerable
1个回答
0
投票

多亏了它的解决。答案是

“您不能创建类型扩展方法,即,通过使用添加“实例”方法来扩展实例的方式来添加类型。扩展方法需要一个实例。 -反射

© www.soinside.com 2019 - 2024. All rights reserved.