Anyone know a good workaround for the lack of an enum generic constraint?

后端 未结 12 1387
情书的邮戳
情书的邮戳 2020-11-22 15:37

What I want to do is something like this: I have enums with combined flagged values.

public static class EnumExtension
{
    public static bool IsSet

        
12条回答
  •  一生所求
    2020-11-22 15:47

    Actually, it is possible, with an ugly trick. However, it cannot be used for extension methods.

    public abstract class Enums where Temp : class {
        public static TEnum Parse(string name) where TEnum : struct, Temp {
            return (TEnum)Enum.Parse(typeof(TEnum), name); 
        }
    }
    public abstract class Enums : Enums { }
    
    Enums.IsSet("Local")
    

    If you want to, you can give Enums a private constructor and a public nested abstract inherited class with Temp as Enum, to prevent inherited versions for non-enums.

提交回复
热议问题