为不同版本的软件构建C#DLL的最佳方法是什么?

时间:2016-11-10 19:29:26

标签: c# dll versions

我必须构建三个不同版本的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

2 个答案:

答案 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的不同版本。