我有一系列不同类的继承树。这些类中的每一个都有一些我需要时常访问的静态属性。有时候我需要一个特定类的属性,有时我需要某个多态实例最终发生的特定类的属性。可以通过实例和类访问的可覆盖属性
这可能比较容易,比如Java(我认为)。只需制作一堆静态字段(可以重写这些字段吗?我不确定)。但是在C#中,非静态字段只能通过实例(自然地)访问,而静态字段只能通过它们相应的类访问(非自然地)。
而且,您不能“超载”,呃,静态。如果某个类具有静态和非静态Foo
,则执行instance.Foo
将失败,因为编译器不清楚哪个Foo
指的是即使不可能指向静态,因为它不允许。
好的,我会提供一些代码。说我有这样的:
class Base
{
public static readonly string Property = "Base";
}
class Child1 : Base
{
public static readonly new string Property = "Child 1";
}
class Child2 : Base
{
public static readonly new string Property = "Child 2";
}
,然后某处:
public void SomeMethod(Base instance)
{
System.Console.WriteLine(instance.Property); // This doesn't work.
}
而且别的地方:
public void SomeOtherMethod()
{
System.Console.WriteLine(Child2.Property);
}
我想类似的东西,实际工作。
这个问题还不清楚。也许你应该张贴一些代码来显示你想要做的事情。如果你愿意,你可以用Java来做这件事。 Java对“静态”的含义有不同的看法,包括一种根本不是静态的静态(与嵌套类相关)。 – 2014-10-17 23:41:14
@彼得好了,完成了。不是Java,因为我不是Java程序员。 – 2014-10-17 23:54:54