我为产品Foo创建了一个附加组件。有不同版本的Foo,即版本1,2,3和4。
这些版本主要兼容API,但不完全。
我目前有5个项目:
Foo * -projects包含Foo版本1-4的加载项。
Foo * -projects中有很多重复的文件,因为API中有很多东西对于所有版本的Foo都是相同的。将所有Foo版本常见的内容分开是很好的。
为什么不为所有版本的Foo创建一个名为FooCommon的公共程序集?
如果我将所有Foo版本的所有类都放入一个新的库项目中,我仍然需要选择新FooCommon应该引用哪个版本的Foo。如上所述,它们并不相同。
答案 0 :(得分:0)
创建一个包含常用方法的界面:
public interface IFoo
{
void CommonMethod1();
void CommonMethod2();
}
从IFoo创建一个抽象基类:
public abstract class FooBase : IFoo
{
// Implement the common calls here
public void CommonMethod1()
{
// concrete shared code goes here
}
public void CommonMethod2()
{
// concrete shared code goes here
}
}
从FooBase创建一次性代码:
public class FooOne : FooBase
{
// concrete code specific to FooOne goes here
}
public class FooTwo : FooBase
{
// concrete code specific to FooTwo goes here
}