基类:
public abstract class User
    {
        //抽象的用户级别,不管子类是什么,总会存在以下用户:
        [Description("用户级别")]
        public enum UserLevel
        {
            [Description("老板")]
            Boss,
            [Description("系统管理员")]
            Admin
        }
      
        ......
    }子类:
public abstract class CompanyUser : User
    {
        //继承的用户级别,子类是公司,存在以下用户:
        [Description("用户级别")]
        public enum UserLevel
        {
            [Description("默认用户")]
            Normal,
            [Description("报表用户")]
            Reporter,
            [Description("主管")]
            Director,
            [Description("经理")]
            Manager,
            [Description("财务人员")]
            Accountant,
            [Description("财务经理")]
            AccountantManager,
            [Description("老板")]
            Boss,
            [Description("系统管理员")]
            Admin
        }        ......
    }
现在的问题是enum类型不能标记为abstract或virtual的,那我如何实现用子类的UsersLevel替换基类的UsersLevel?
换句话说,如何实现以下的代码:User user = new CompanyUser(); //这句当然没错
user.UserLevel = CompanyUser.UserLevel.AccountantManager; //这句编译不通过!

解决方案 »

  1.   

    你这是 【内嵌】【类型】 的定义 ...不是成员定义,如何继承?
    这个想法有创意,可惜 .... 挂了
      

  2.   

    是啊,如果这样不行,那请问用什么方法“模拟”的实现“枚举继承”?
      

  3.   

    相同定义的枚举只会有一份,如果有了第二份,即使定义相同,但会因为在不同的作用区域下变成两个完全不同的枚举。换句话说,基类的枚举不能被子类继承,只能使用基类的现成的枚举。
      

  4.   

    为何要把枚举放在类内部?拿出来不是更好?
      

  5.   

    在外定义较好 或者单独定义一个静态类