更改特定客户的winform应用程序

时间:2012-04-06 17:43:10

标签: c# oop agile software-design

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

3 个答案:

答案 0 :(得分:3)

您可以使用Plug-in patten在运行时加载程序集:(来自链接)

  

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

大多数DI框架都提供此功能。如果您不想roll your own,可以搜索大量的示例框架。

  1. Ninject
  2. MEF

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

确保您提供有关这些挂钩如何工作的充分文档 - 即使您最终开发它们。