Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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#_Design Patterns_Dynamic_Dll - Fatal编程技术网

C# 允许用户选择要使用的代码的实现

C# 允许用户选择要使用的代码的实现,c#,design-patterns,dynamic,dll,C#,Design Patterns,Dynamic,Dll,我正在启动一个新项目,我们需要根据一些公式进行一些计算,这些公式在有限的时间间隔内有效,例如2017年到2018年,每两年可以更改一次 但是,我们需要允许用户选择要使用的公式集,例如,用户可以使用2017年公式或2018年公式 我们正试图找出一种方法来避免像这样的代码 class FormulaA { double Calculate(Year selectedFormulaYear) { if(year == ...) else if (year === ...)

我正在启动一个新项目,我们需要根据一些公式进行一些计算,这些公式在有限的时间间隔内有效,例如2017年到2018年,每两年可以更改一次

但是,我们需要允许用户选择要使用的公式集,例如,用户可以使用2017年公式或2018年公式

我们正试图找出一种方法来避免像这样的代码

class FormulaA {
  double Calculate(Year selectedFormulaYear) {
      if(year == ...)
      else if (year === ...)
  }
}
起初,我想做一个dll库,其中包含每年的公式,并在代码中动态加载它们。
有更好的方法吗?

战略模式正是您所需要的。遵循模式文章,为公式创建接口和特定实现。然后在运行时根据您确切需要的年份设置正确的实现。遵循模式文章,为公式创建接口和特定实现。然后在运行时根据年份设置正确的实现

一个好方法是,在处理规则之后,接收年份并返回基于该年份的函数列表。一个好方法是,接收年份并返回基于该年份的函数列表,在那之后,你要制定规则。