我有一个项目,其中一些业务逻辑被分离到一个 DLL 项目中,这个 DLL 包含该软件为特定客户提供的业务逻辑。
现在我在另一个具有不同规则的客户端想要实现该软件后遇到了一个问题,我需要应用程序根据使用该软件的客户端加载适当的 dll,考虑到该 dll 包含相同的函数名称但不同的主体。
我正在使用 c# 3.5,有没有办法这样做?
我有一个项目,其中一些业务逻辑被分离到一个 DLL 项目中,这个 DLL 包含该软件为特定客户提供的业务逻辑。
现在我在另一个具有不同规则的客户端想要实现该软件后遇到了一个问题,我需要应用程序根据使用该软件的客户端加载适当的 dll,考虑到该 dll 包含相同的函数名称但不同的主体。
我正在使用 c# 3.5,有没有办法这样做?
是的,你当然可以。您可以分支项目,更改类的实现,保持所有类和类成员的签名相同,重新编译,您的业务逻辑将按照您的意愿运行。
但是,这样不好。您将拥有两个不同的分支,具有不同的实现,为此您必须永远保持签名同步。然后你会有另一个客户,另一个。这将是一场永无止境的噩梦。
是否可以分离出不同的功能?你可以:
如果我正确理解了您的问题,那么您正在寻找业务逻辑定制。您可以通过多种方式实现它。我在这里描述的其中之一。
在您的应用程序目录上为自定义 DLL 创建一个文件夹。通过包装器创建所有业务对象。这将首先通过使用反射在任何业务对象之前检查适当类的自定义 dll,否则它将从常规类创建业务逻辑。希望这会有所帮助。
针对接口 - IBusinessLogic 对业务逻辑进行编码。
您可以将两个业务逻辑保留在同一个程序集中,并使用基于配置的依赖注入来指定在部署到客户期间使用哪个业务逻辑。