0

我有一个 winform 应用程序。我把它给了三个客户,每个客户都想要一个专门针对他们的小调整或定制。为此,我必须为每个客户保留一个单独的版本。我可能会以这种方式完成许多版本。我认为依赖注入将是如何处理这个问题,但我听说您必须在 main 方法中注册您的依赖项,并且您仍然必须添加对每个客户端 DLL 的引用,所以我仍然需要不同的版本。处理此问题的首选面向对象方式是什么?有更好的方法来处理这个吗?

4

3 回答 3

3

您可以使用插件模式在运行时加载程序集:(来自链接)

当应用程序代码在多个运行时环境中运行时,通常使用分离接口 (476),每个运行时环境都需要特定行为的不同实现。

大多数 DI 框架都提供此功能。您可以在 get很多示例中搜索您选择的框架 - 如果您不想推出自己的.

  1. 忍者
  2. MEF
于 2012-04-06T17:59:08.370 回答
0

您可以使用配置文件来配置您的 DI 容器,以便您可以使用不同的配置文件重用相同的二进制文件来实现不同的自定义。但是您需要确保彻底测试所有不同的配置。同一应用程序的稍微不同的版本在不引起意外中断的情况下维护并非易事。

于 2012-04-06T18:00:08.877 回答
0

根据自定义的性质,您可能能够将所有相关修改捕获到项目的不同部分(而不是让它们分布在整个项目中)。如果可以(例如,客户端提供文件功能),您可以动态加载 DLL(例如,基于配置文件)并允许 DLL 中的函数执行完成自定义的必要功能(基于参数由主代码提供)。

通过这种方式,您可以根据客户端的需要为您的代码提供预定义的挂钩,这些挂钩可以动态更改(即使只是在启动时加载 dll)。如果客户端想要更改不同的功能,您可以将这些 DLL 分成多个,但不一定是所有客户端的所有功能。然后,您可以提供 DLL 的“默认”版本。

谁开发钩子取决于您与客户的设置。

确保您提供足够的文档说明这些钩子应该如何工作——即使您最终开发了它们。

于 2012-04-06T18:00:56.793 回答