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