给出下面的例子,是否有可能用ClassyFoo扩展Foo类,并且由ClassyFoo继承的Bar实例继承自ClassyFoo,同时保持由Foo创建的Bar实例仍然继承Foo?从派生类或基类版本的类继承C#类
例如:
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的期望的输出()是:
显示优等的Foo
设置的Foo
设置优等的Foo
设置酒吧
而Foo.Show的输出()是:
显示美孚
设立富
设置酒吧
的情况Bar类增加了一些配置/专业化美孚,但优雅的Foo也是如此。但Bar和ClassyFoo的专业化可以存在于同一个对象上。
我试图避免从ClassyFoo继承重复酒吧。实际上有多个酒吧,但只有一个ClassyFoo,所以这将是很多重复。
实例不会从类继承,实例是从其他类继承的类的实例。你有'Bar:Foo',所有'Bar'实例都是如此。听起来像你可能需要另一个子类,'ClassyBar'。 – Blorgbeard
也许看一看在C#创建一个混合的这种方法:http://www.zorched.net/2008/01/03/implementing-mixins-with-c-extension-methods/ – gideon