繁体   English   中英

如何更改基类并在C#中保持相同的实现

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM