[英]How to change base class and keep same implementation in C#
这个问题很容易理解,但是我找不到解决此问题的优雅方法。 假设我已经实施
public partial class PluginControl : ClientTabControlPlugin
{
...
}
请注意,这是一个局部类,因为它是部分使用Windows Forms Designer创建的。
现在我要实现这一点:
public partial class PluginControl(2) : ContactTabControlPlugin
{
...
}
即,(几乎)相同的实现,但不同的基类。 注意为了使每个类都可以用作我所使用软件的插件,我被迫这样做。
如何在不创建PluginControl实现的副本的情况下解决此问题?
不,您不能这样做,C#没有多重继承。
当然,您可以偏向于继承而不是继承,并使用共享类:
public partial class PluginControl : ClientTabControlPlugin
{
public Foo DoFoo(Bar bar)
{
return new Foo(bar);
}
}
public partial class PluginControl(2) : ContactTabControlPlugin
{
public Foo DoFoo(Bar bar)
{
return new Foo(bar);
}
}
public class Foo
{
public Foo(bar)
{
// shared implementation
}
}
我不认为有任何优雅的方法可以在c#中解决此问题,但是一个选择是创建一个包含所有实际逻辑的第三类,然后在每个控件的每个方法的实现中简单地在一个实例中调用match方法。第三等。
另一种选择是将接口添加到两个控件类中,并将所有共享逻辑放入扩展方法中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.