为多个客户定制c#WinForm应用程序

时间:2011-06-11 08:44:16

标签: c# dependency-injection mef autofac multi-tenant

在这种情况下思考:

我有一个c#windows窗体应用程序。这个应用程序对我的所有客户都是一样的。现在其中一个需要修改添加新文本框和新逻辑的表单。

我显然不想复制我的应用程序,并且插入带有customer-Id的IF语句来控制逻辑可以很容易地驱动到意大利面条式的代码。

我认为在这种情况下我可以为每个客户创建一个单独的dll项目;在里面我可以编写自定义表单实现与默认表单相同的接口(对于逻辑类也是如此)我可以尝试通过配置文件切换这些dll或使用正确的客户dll构建项目(或者使用例如Windsor Castle for DI )。

这是一个有效的模式吗?存在不同的方式?

更新

我尝试列出:

2 个答案:

答案 0 :(得分:3)

我认为在这种情况下,MEF会是更好的选择。 Castle更像是业务逻辑的DI引擎,对于控制对象生命周期非常有用,特别是当您希望能够切换程序的工作方式时(多个小线程或一个线程中的单个大型操作)。
另一方面,MEF剥夺了为此类配置添加配置文件的需要。您只需使用库。我认为MEF最适合客户端GUI表单。

答案 1 :(得分:1)

如果您正在开发multitenant应用程序,那么有像Autofac这样的DI框架支持这种自定义。看看this article

您还可以使用源代码管理系统来帮助您。当您需要自定义时,创建一个分支并在那里进行自定义,这样您就不必复制代码。

相关问题