覆盖静态继承的静态变量

时间:2016-10-15 20:32:18

标签: c#

我有一个带有accessFlag静态整数的抽象类User,然后我有多个类继承了这个带有不同accessFlag的类,例如学生,管理员,老师。所有这些类都必须包含accessFlag,但我想在那些类中设置它,如管理员静态accessFlag = 2;

当我创建管理员并显示accessFlag时,现在使用下面的代码它显示0而不是2.我假设我可以在管理员中创建getter和setter然后我会得到正确的值但是我不想在每个类中都有如此多的重复代码,这些代码继承自accessFlag的用户getter和setter。

 abstract public class User
    {
        static int accessFlag;

        public int AccessFlag
        {
            get
            {
                return accessFlag;
            }

            set
            {
                accessFlag = value;
            }
        }
    }
    public class Administrator: User
        {
            static int accessFlag = 2;
        }

1 个答案:

答案 0 :(得分:0)

没有语言支持怎么做。最好的还是覆盖属性的getter和setter。顺便说一下,我认为setter在这里没有任何意义。

如果没有它,如何实现它的唯一选择是反思。在getter中,您可以在对象上调用GetType ()并在该类上请求成员accessFlag。但它会非常缓慢和丑陋。