Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义业务逻辑_C#_.net_Configuration_Business Logic_Extensibility - Fatal编程技术网

C# 自定义业务逻辑

C# 自定义业务逻辑,c#,.net,configuration,business-logic,extensibility,C#,.net,Configuration,Business Logic,Extensibility,我有一个项目,其中一些业务逻辑被分离为一个DLL项目,这个DLL包含该软件针对特定客户的业务逻辑 现在我遇到了一个问题,因为另一个具有不同规则的客户端想要实现该软件,我需要应用程序根据使用该软件的客户端加载适当的dll,考虑到该dll包含相同的函数名,但不同的主体 我使用的是c#3.5,有没有办法做到这一点 是的,你当然可以。您可以分支项目,更改类的实现,保持所有类和类成员的签名相同,重新编译,您的业务逻辑将按照您的意愿运行 但是,这不太好。您将有两个不同的分支,具有不同的实现,因此必须保持签名

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

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


我使用的是c#3.5,有没有办法做到这一点

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

但是,这不太好。您将有两个不同的分支,具有不同的实现,因此必须保持签名永远同步。然后你会有另一个客户,还有另一个。这将是一场永远不会结束的噩梦

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

  • 将配置放入数据库或配置文件(可能是XML)。出于这个原因,你的很多应用程序都应该基于表或配置文件工作
  • 您可以在代码需要不同的地方实现和
  • 有点老派,但您可以使用编译代码的部分实现即插即用功能(忽略关于绘制代码的部分)。然后,您可以将功能放入易于编辑的文本文件中
  • 看一看为这种类型的东西而建的

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

    但是,这不太好。您将有两个不同的分支,具有不同的实现,因此必须保持签名永远同步。然后你会有另一个客户,还有另一个。这将是一场永远不会结束的噩梦

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

    • 将配置放入数据库或配置文件(可能是XML)。出于这个原因,你的很多应用程序都应该基于表或配置文件工作
    • 您可以在代码需要不同的地方实现和
    • 有点老派,但您可以使用编译代码的部分实现即插即用功能(忽略关于绘制代码的部分)。然后,您可以将功能放入易于编辑的文本文件中
    • 看一看为这种类型的东西而建的

    根据接口对业务逻辑进行编码-IBusinessLogic


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

    根据接口IBusinessLogic对业务逻辑进行编码


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

    如果我正确理解了您的问题,您就需要进行业务逻辑自定义。你可以通过几种方式来实现它。我在这里描述的其中一个


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

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


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

    那么你推荐的解决方案是什么呢?@Robert:请提供一些选项。为不同的客户端设置软件是很棘手的,尤其是第二个客户端。问题是一些销售人员或老板认为“稍微调整一下”会很容易,现在穆斯塔法必须让它工作。MEF为+1。这需要一点技巧才能让你的头脑清醒过来,但它能很好地处理客户端代码的动态加载。那么你推荐的解决方案是什么呢?@Robert:只需输入一些选项。为不同的客户端设置软件是很棘手的,尤其是第二个客户端。问题是一些销售人员或老板认为“稍微调整一下”会很容易,现在穆斯塔法必须让它工作。MEF为+1。这需要一些技巧才能让你的头脑清醒过来,但它能很好地处理动态加载适合客户端的代码。你有多个不同的客户端使用同一个软件实例吗?或者每个客户端都使用不同的实例?是否有多个不同的客户端使用相同的软件实例?或者每个客户端都在使用不同的实例?在这个senario中使用带有依赖项注入的接口比使用反射要好得多。在这个senario中使用带有依赖项注入的接口比使用反射要好得多。