gpt4 book ai didi

c# - 删除 Convert.ToDecimal 依赖项(依赖项注入(inject))

转载 作者:行者123 更新时间:2023-12-02 04:31:34 26 4
gpt4 key购买 nike

我目前正在学习依赖注入(inject),以使用 MVC 创建更易于维护的代码。我已经将模型和计算器服务注入(inject)到我的 Controller 中,而不是具有新的依赖项。

我的构造函数中有一些 Convert.ToDecimal 调用,并且不知道是否需要担心使用依赖项注入(inject)来删除静态方法调用,这是一种 DI 设计味道。删除它是否太过分了?

private readonly ICalculationService _calculation;
private readonly ICalculatorModelService _calculatormodel;

public CalculatorController(ICalculationService calculation,
ICalculatorModelService calculatormodel) {
_calculation = calculation;
_calculatormodel = calculatormodel;
}

public ActionResult Index() {
var model = _calculatormodel;
return View(model);
}

public PartialViewResult Calculate(string submit, string txtValue,
string value1) {
var model = _calculatormodel;
if (submit == "+")
{
if (Session["value1"] == null)
Session.Add("value1",Convert.ToDecimal(txtValue));
else
Session["value1"] = value1;
}
else if (submit == "=")
{
if (Session["value1"] == null)
Session.Add("value1", 0);

model.Result = _calculation.Calculate(Convert
.ToDecimal(Session["value1"]), Convert.ToDecimal(txtValue));
}

return PartialView("_Calculator", model);
}

最佳答案

如果我理解这个问题,你担心的是 Convert 的静态调用然后你询问这个类是否也应该被注入(inject)。

如果是这样的话,你也没有。对于类似的静态调用,如 Math. 也是如此。方法等

对于此类 .NET 帮助程序调用,我遵循的规则是,如果调用是确定性的,即始终为相同的输入返回相同的输出,则继续调用它(无论如何,您依赖于 .NET 框架,对吧?)。但如果调用是不确定的,例如 Datetime.Now或使用Random类,然后我注入(inject)这些依赖项(当然,这使代码更易于测试)

关于c# - 删除 Convert.ToDecimal 依赖项(依赖项注入(inject)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22973024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com