【发布时间】:2011-06-11 08:44:15
【问题描述】:
想想这个场景:
我有一个 c# windows 窗体应用程序。这个应用程序对我所有的客户都是一样的。现在他们中的一个需要修改一个表单,添加新的文本框和新的逻辑。
我显然不想复制我的应用程序,插入带有 customer-Id 的 IF 语句来控制逻辑可以很容易地变成意大利面条式的代码。
我认为在这种情况下我可以为每个客户创建一个单独的 dll 项目;在里面我可以编写自定义表单实现与默认表单相同的接口(逻辑类也相同),我可以尝试通过配置文件切换这些 dll 或使用正确的客户 dll 构建项目(或使用例如 Windsor Castle for DI )。
这是一个有效的模式吗?存在不同的方式?
更新
我尝试列出:
【问题讨论】:
-
在MEF vs IOC/DI 上查看此答案。我认为 MEF 或 DI 会为你工作。就个人而言,我会使用 Autofac,但我有偏见。
标签: c# dependency-injection mef autofac multi-tenant