使用DependencyResolver是否会导致性能下降?

时间:2020-01-02 11:59:01

标签: c# .net inversion-of-control

我发现了几篇文章,概述了C#MVC DependencyResolver中的should be avoided的原因

但是我还发现了一种向构造函数中注入“基本依赖项”的模式,并且该类本质上包含了应用程序依赖项的所有实例,但是每次重新实例化依赖项时,显然都没有包含在单个实例中

// example possibly to be avoided
public interface IBaseDependencies
{
    IClientRepo ClientRepo { get; }
    IProductRepo ProductRepo { get; }
    /// more here
}

..但是,尽管我喜欢以这种方式传递依赖项的简单性,但问题是所有依赖关系都将被实例化,但可能并非全部都需要,因此为了避免性能下降,我想添加C#的{{1 }}这样的课程...

Lazy<>

因此,现在仅在直接调用依赖项时实例化该依赖项。项目越大,“基本依赖项”方法就越有用,但是用这种方法会损害性能吗?

1 个答案:

答案 0 :(得分:1)

我不会称其为模式,而是代码的味道。至少,它违反了Interface Segregation PrincipleDependency Inversion Principle

会损害性能吗? Only you can answer that question