我必须构建三个不同版本的DLL,其中包含我们软件的API调用。到目前为止,我已经找到了使用继承的以下方法。有人可以确认我是否以正确的方式使用继承(或者如果你有建议以正确/更好的方式进行继承?)我是新手,所以仍在学习C#项目编程。
到目前为止,我有一大类API_calls(所有DLL版本都很常见),如下所示:
namespace APIcalls
{
public partial class API_Calls
{
public void Common_function1()
{
}
public void Common_function2()
{
}
}
}
然后我有三个.cs类文件,其中每个类似于以下内容(Edition_A,Edition_B和Edition_C是每个版本的DLL的不同因素),任何其他调用都包含在部分类API_Calls中如下:
namespace dll_edition
{
public class Edition_A
{
public Edition_A()
{
// Code here for checking if current DLL is authorized
// Otherwise throw an exception
}
}
}
namespace APIcalls
{
public partial class API_Calls : Edition_A
{
public void Additional_Edition_A_function1()
{
}
public void Additional_Edition_A_function2()
{
}
}
}
在每个程序集构建中,我包括Edition_A文件,或Edition_B文件或Edition_C文件,然后我构建了所有三个程序集,它们给了我三个DLL。
我的问题:这是正确的做法吗?关于我是如何做到这一点有什么负面的吗?或者有更好的方法吗?我的最终目标是拥有三个版本的DLL,其中包含一些常见的API调用,然后是针对每种DLL类型的各种API调用。
感谢您提供的任何意见!
-DD
答案 0 :(得分:0)
据我所知,你在一个公共基类中有一组常用函数,供不同的其他类使用。
有各种方法可以利用自己的利弊: -
1)为你正在做的每种类型创建单独的库,其中只有有限的功能进入最终用户并且dll的大小很小。如果你有dll工作加上你正好转的模型你更适合bin中的dll和新的功能已经到位。
这也使您的更改成为中心,因此您知道更改的位置。但是如果你已经将dll分发给最终客户并且他们需要在其他dll中使用方法,那么你又必须重新发布你的更改。
2)在1 dll中完成所有操作,不需要的功能暴露给客户端,部署包可能很重。但是你可以随时使用所有功能。
总结主要取决于您的业务和部署模型。
答案 1 :(得分:0)
就我个人而言,我更喜欢在一个DLL中使用Factory Pattern来确定哪个版本在运行时运行,但如果它必须是3,则根据您的要求,这是我推荐的。< / p>
创建4个DLL。
第一个项目将只包含编辑界面(例如DLL的结构,但没有关于它如何工作的内容)。此接口可以附加到DLL的不同版本的类。使用此结构将设置调用代码,以便它可以对DLL的不同版本使用依赖注入。
其他3个DLL将是您需要构建的DLL的不同版本。