在富域模型中使用应用程序级设置

时间:2018-09-14 08:02:24

标签: c# asp.net-core domain-driven-design domain-model rich-domain-model

我想要一个要在我的富域模型中使用的全局/应用程序级别设置。

我有一个方法可以根据传递的参数进行一些计算。

这可能不是最好的示例,看起来也不像域模型中的方法,但我尝试使其保持简单,以便您理解问题。

public decimal Calculate(CalculationMethod calculationMethod)
{
    switch (calculationMethod)
    {
        case CalculationMethod.Multiply: 
            return _x * _y; // _x and _y are fields
        case CalculationMethod.Divide: 
            return _x / _y;
    }
}

现在让我们说在我的其他域模型中有许多类似的方法,它们的方法也接受CalculationMethod。我想要一个全局设置,以便可以全局设置一个计算方法,以便将其用作参数的所有方法都可以使用它。

一种解决方案是每次我调用此方法时都读取配置。

我想知道是否还有更好的方法,以便可以全局设置CalculationMethod且永不传递它,而是拥有某种静态变量(单变量)来保存计算方法,并直接在我的方法中读取它而不传递它。但是我认为那会出现线程安全问题。

public decimal Calculate()
{
    // or read it from file here?
    switch (GlobalSettings.CalculationMethod)
    {
        case CalculationMethod.Multiply: 
            return _x * _y; // _x and _y are fields
        case CalculationMethod.Divide: 
            return _x / _y;
    }
}

我不能在构造函数中传递它,因为它不属于我的域模型。

如何解决此类问题?有没有比我提到的两个更好的方法了?

我在马克·塞曼(Mark Seemann)在这里的回答下的评论中问了这个问题:App-level settings in DDD?

0 个答案:

没有答案