1

我有一个项目,其中一些业务逻辑被分离到一个 DLL 项目中,这个 DLL 包含该软件为特定客户提供的业务逻辑。

现在我在另一个具有不同规则的客户端想要实现该软件后遇到了一个问题,我需要应用程序根据使用该软件的客户端加载适当的 dll,考虑到该 dll 包含相同的函数名称但不同的主体。

我正在使用 c# 3.5,有没有办法这样做?

4

3 回答 3

5

是的,你当然可以。您可以分支项目,更改类的实现,保持所有类和类成员的签名相同,重新编译,您的业务逻辑将按照您的意愿运行。

但是,这样不好。您将拥有两个不同的分支,具有不同的实现,为此您必须永远保持签名同步。然后你会有另一个客户,另一个。这将是一场永无止境的噩梦。

是否可以分离出不同的功能?你可以:

  • 将配置放入数据库或配置文件(可能是 XML)。出于这个原因,您的许多应用程序应该基于表或配置文件工作。
  • 您可以在代码需要不同的地方实现插件提供程序。
  • 有点老派,但您可以使用CodeDom编译代码的部分来实现即插即用功能(忽略关于绘制代码的部分)。然后,您可以将功能放入易于编辑的文本文件中。
  • 看看Managed Extensibility Framework,专为这种类型的东西而构建。
于 2010-05-15T20:23:51.973 回答
1

如果我正确理解了您的问题,那么您正在寻找业务逻辑定制。您可以通过多种方式实现它。我在这里描述的其中之一。

在您的应用程序目录上为自定义 DLL 创建一个文件夹。通过包装器创建所有业务对象。这将首先通过使用反射在任何业务对象之前检查适当类的自定义 dll,否则它将从常规类创建业务逻辑。希望这会有所帮助。

于 2011-12-15T13:33:50.950 回答
1

针对接口 - IBusinessLogic 对业务逻辑进行编码。

您可以将两个业务逻辑保留在同一个程序集中,并使用基于配置的依赖注入来指定在部署到客户期间使用哪个业务逻辑。

于 2010-05-15T21:29:34.660 回答