模块化C#Winform应用程序

时间:2012-04-18 05:17:34

标签: c# winforms dll module

我正在使用C#.NET 2010

我正在为20个网点开设POS项目,并且已在每个网点安装和使用。有一天表格有变化,比如付款方式,我必须重新设计UI表格以及修改逻辑代码。然后我重新编译项目并向所有商店发送更新,这并不容易。 然后我有了一个想法,我需要将项目中的每个表单分离为模块(如果可以,我将使用DLL文件),所以当我修改表单时,我不需要重新编译所有表单。我只需修改并编译所需的表单并将其更新到outlet。

那么我可以将表单编译为DLL吗?如果是这样如何实现呢? 或者也许我不能正确地得到我的想法?

提前致谢..

5 个答案:

答案 0 :(得分:3)

更新

正如对CP条款的评论所指出的,以前的答案有许多缺陷。 This article在C#中更好地实现了插件架构。您还可以参考this answer获取更多选项。

上一个答案

您可以使用plugin架构来执行此操作。这是very good article,可能会对您有所帮助。

  

本文向您演示如何将单个模块合并为另一个应用程序的插件或将其用作独立应用程序。本文将演示如何获得上述结果所需的最小变化。

答案 1 :(得分:0)

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

你必须要小心,在同一个程序集中保持紧密结合的表单(即常用引用)可能是一个好主意。你可以通过过度调制遇到困难。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可Publish a ClickOnce Application,这将减少更新应用程序的难度。

答案 4 :(得分:0)

我更感兴趣的是当你说“然后我重新编译项目并将更新发送到所有商店并且不容易做以及为什么你认为”将每个表单分离为模块/ DLL“会修复你的问题..这是因为从所有项目编译的DLL的大小太大而无法发送?如果你试图将每个表单分成它自己的模块/ dll,那么你最终可能有多个项目有一个溶液...