模块化的 C# Winform 应用程序

4
我正在使用C#.NET 2010。 我正在为20个门店开发一个POS项目,并已经在每个门店安装和使用。有一天,表单中的付款方式发生了变化,我不得不重新设计UI表单并修改逻辑代码。然后我重新编译项目并向所有门店发送更新,这并不容易。 然后我有一个想法,我需要将项目中的每个表单分别作为模块(如果可以的话,我会使用DLL文件),这样当我修改表单时,就不需要重新编译所有表单。我只需修改和编译所需的表单,然后将其更新到门店即可。 那么,我能将表单编译为DLL吗?如果可以,如何实现? 或者说我的想法有问题吗? 提前感谢..
5个回答

3

更新

正如评论中指出的那样,之前的答案存在许多缺陷。这篇文章提供了更好的C#插件架构实现方法。您还可以参考这个答案获取更多选项。

之前的答案

您可以使用插件架构来实现。这里有一篇非常好的文章可以帮助您。

本文向您演示如何将单个模块作为另一个应用程序的插件或将其用作独立应用程序。文章将演示如何仅需要进行最小更改即可获得上述结果。


0

你可以在 DLL 中拥有一个表单。表单只是另一个类,通常是许多类(即部分类),就像 DLL 中的任何其他类一样,并且您将引用相同。您只需要确保它是公共的,以便外部程序集可以访问。

您只需要小心,最好将密切相关的表单(即共同引用)保存在同一个程序集中。过度调制可能会导致困难。


0

我认为分发 DLL 没有任何问题。为了安全起见,最好确保其已签名(可以通过 VS 2010 的项目属性完成此操作)。您可能应该为您的支付 UI 功能定义一个接口,然后由您的 DLL 中的类实现此接口。您应用程序中的调用部分(不变的 UI)可以通过此接口进行调用,而不是通过实际的(具体的)表单对象。


0

0

我更感兴趣的是,当你说“然后我重新编译项目并向所有出口发送更新,这并不容易”,以及为什么你认为“将每个表单分开作为模块/DLL”会解决你的问题...是因为从所有项目编译的DLL大小太大而无法发送吗?如果你试图将每个表单分成自己的模块/DLL,那么最终可能会有多个项目与一个解决方案...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接