鉴于下面的示例,是否可以使用 ClassyFoo 扩展类 Foo 并让 ClassyFoo 创建的 Bar 实例从 ClassyFoo 继承,同时保持 Foo 创建的 Bar 实例仍然从 Foo 继承?
例如:
class Foo
{
protected Foo()
{
Console.WriteLine("Setting up Foo");
}
public static void Show()
{
Console.WriteLine("Showing Foo");
var bar = new Bar();
}
}
class ClassyFoo : Foo
{
public ClassyFoo() : base()
{
Console.WriteLine("Setting up Classy Foo");
}
public new static void Show()
{
Console.WriteLine("Showing Classy Foo");
var bar = new Bar();
}
}
class Bar: Foo
{
public Bar() : base()
{
Console.WriteLine("Setting up Bar");
}
}
ClassyFoo.Show() 的期望输出是:
显示 Classy Foo
设置 Foo
设置 Classy Foo
设置 Bar
Foo.Show() 的输出是:
显示 Foo
设置 Foo
设置栏
情况是类 Bar 为 Foo 添加了一些配置/专业化,但 Classy Foo 也是如此。但是 Bar 和 ClassyFoo 的特化可以存在于同一个对象上。
我试图避免有一个从 ClassyFoo 继承的重复 Bar。实际上有多个 Bars 但只有一个 ClassyFoo,所以这将是很多重复。