如何在没有复制粘贴的情况下以相同的方式扩展两个类?

我编写了一个所有者绘制的TabControl ,但我们的项目也使用TabWorkspace ,它派生自TabControl 。 此刻,我有

 public class OurTabControl : TabControl { // some code that overrides protected methods } public class OurTabWorkspace : TabWorkspace { // the same code } 

我只想让共享代码出现在一个地方,所以我们不必保留两份副本。 这可能在C#中,如果是这样,怎么样?

您可以使用界面并编写扩展方法来完成。

 class OurTabControl: IBehavior class OurTabWorkspace: IBehavior interface IBehavior { } static class BehaviorExtensions { static [returntype] RepeatedBehavior(this IBehavior behavior) { //repeated code here } } 

也许将共享代码重构为一组静态方法?

您可以创建一个包含公共代码的内部帮助器类,并将其作为OurTabControl和OurTabWorkspace中的私有成员引用。 由于TabWorkspace扩展了TabControl,您应该能够利用多态性并将TabControl参数传递给helper类中的方法。 您仍然需要覆盖两个扩展类中的任何常用方法,并从那里调用辅助类方法和/或基本方法。

如何使用部分类? 或者,如何在一个类中定义所有共享方法,并让两个inheritance类实例化它。