我需要在不知道类的类型的情况下访问该类的实例中的 const 类值,并且还能够在类本身上访问它。我怎样才能做到这一点?
我想要实现的示例:
public abstract class A { }
public class B : A
{
public const int X = 50;
}
...
A b = new B();
b.X ???
这是非常不完整的,但我想要实现的是通过多态性(如果有意义的话)从 A 类型的变量访问 B 的 X 常量。
这是我试图实现这一目标的一种方法:
public abstract class A
{
public abstract int X { get; }
}
public class B : A
{
public const int X = 50;
public override int X { get { return B.X; } } // or return 50;
}
问题在于,由于 B 中 X 的重复定义,C# 不会让它编译。那么我应该怎么做呢?有没有更好的办法?或者我唯一的选择是以不同的方式命名它们?