我写了一个所有者绘制的TabControl
,但我们的项目也使用TabWorkspace
来自TabControl
。目前,我已经
public class OurTabControl : TabControl
{
// some code that overrides protected methods
}
public class OurTabWorkspace : TabWorkspace
{
// the same code
}
我只想让共享代码出现在一个地方,所以我们不必保留两份副本。这可能在C#中,如果是这样,怎么样?
答案 0 :(得分:8)
您可以使用界面并编写扩展方法。
class OurTabControl: IBehavior
class OurTabWorkspace: IBehavior
interface IBehavior
{
}
static class BehaviorExtensions
{
static [returntype] RepeatedBehavior(this IBehavior behavior)
{
//repeated code here
}
}
答案 1 :(得分:1)
也许将共享代码重构为一组静态方法?
答案 2 :(得分:1)
您可以创建一个包含公共代码的内部帮助器类,并将其作为OurTabControl和OurTabWorkspace中的私有成员引用。由于TabWorkspace扩展了TabControl,您应该能够利用多态性并将TabControl参数传递给helper类中的方法。您仍然需要覆盖两个扩展类中的任何常用方法,并从那里调用辅助类方法和/或基本方法。
答案 3 :(得分:0)
使用分部课怎么样? 或者,如何在一个类中定义所有共享方法,并让两个继承类实例化它。