代码之家  ›  专栏  ›  技术社区  ›  HelloWorld

C#基类具有未知的枚举属性

  •  0
  • HelloWorld  · 技术社区  · 2 年前

    我想要以下结构。现在,这段代码更多的是一个概念,但我希望基类具有一些包含实际枚举表示的泛型类型。

    我知道这段代码不起作用,但我正在努力实现以下目标。

    抽象类来自另一个程序集,并且无权访问DaysOfWeek枚举

    public enum DaysOfWeek
    {
       S, M, T, W
    }
    
    public abstract class Base
    {
       public abstract Enum SomeUnknownEnum { get; }
    
       public abstract void Foo(Enum unknown);
    }
    
    public class Derived : Base
    {
       // I know this does not work and it should Enum for this to compile but this is the end goal
       public override DaysOfWeek SomeUnknownEnum { get; }
    
       public override void Foo(DaysOfWeek unknown)
       {
            switch(unknown)
            {
               //...
            } 
       }
    }
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Lennart    2 年前

    可以使用仅限于枚举的泛型类型:

    public enum DaysOfWeek
    {
        S, M, T, W
    }
    
    public abstract class Base<T> where T : Enum
    {
        public abstract T SomeUnknownEnum { get; }
        public abstract void Foo(T unknown);
    }
    
    public class Derived : Base<DaysOfWeek>
    {
        public override DaysOfWeek SomeUnknownEnum { get; }
        public override void Foo(DaysOfWeek unknown)
        {
            switch (unknown)
            {
                //...
            }
        }
    }