正在删除Convert.ToDecimal依赖项(依赖项注入)

本文关键字:依赖 注入 ToDecimal 删除 Convert | 更新日期: 2023-09-27 17:57:42

我目前正在学习依赖项注入,以使用MVC创建更易于维护的代码。我已经在我的控制器中注入了一个模型和一个计算器服务,而不是一个to new up依赖项。

我的构造函数中有几个Convert.ToDecimal调用,不知道是否需要担心使用依赖注入来删除静态方法调用,这是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.ToDecimal依赖项(依赖项注入)

如果我理解这个问题,您会担心Convert的静态调用,并询问是否也应该注入这个类。

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

对于这样的.NET助手调用,我遵循的规则是,如果调用是确定性的,即总是为相同的输入返回相同的输出,那么继续调用它(无论如何,您都依赖于.NET框架,对吧?)。但是,如果调用是非确定性的,比如Datetime.Now或使用Random类,那么我会注入这些依赖项(当然,这会使代码更易于测试)