我最近在一次采访中被问到,如果我知道一种绕过/绕过.NET限制的方法,那么类只能从一个类继承,而不能从多个类继承。显然我不知道答案,否则我不会在这里问这个问题。如果没有实现多个接口(这看起来像是一个错误的答案)或将类链接到一个继承自另一个继承自另一个接口的类,那还有另一种方法可以实现这个我不知道的吗?
答案 0 :(得分:2)
如果没有实现多个接口(这看起来像是一个错误的答案)或将类链接到一个继承自另一个继承自另一个接口的类,那还有另一种方法可以实现这个我不知道的吗?
不,我怀疑实现多个接口是正确的答案。
这是相当标准的。假设您有课程Foo
和Bar
,并希望课程FooBar
从Foo
和Bar
“继承”。然后,您创建接口IFoo
和IBar
,并拥有Foo : IFoo
和Bar : IBar
。然后你定义FooBar : IFoo, IBar
,标准实现将是
class FooBar : IFoo, IBar {
private readonly IFoo foo = new Foo();
private readonly IBar bar = new Bar();
// or pass these in as dependencies
public void Moo() {
foo.Moo();
}
public void Mar() {
bar.Mar();
}
}
是的, 可以进行大量的写作,但 不是很难(VS或R#中有工具可以帮助加速小位)。