在非MVC应用中导入

本文关键字:导入 应用 MVC 在非 | 更新日期: 2023-09-27 18:02:39

我想在控制台应用程序中使用Ninject。

我有几个程序集,希望能够在所有这些程序集中使用ninject。

我已经创建了包含我所有的ninject模块的解析器项目,我也有一个类在这里加载我所有的模块到内核。

我如何访问我的内核在我所有的模块?

我读到我可以使用服务定位器模式,但显然这不是一个好的模式。

在非MVC应用中导入

关于服务定位器模式可能有很多意见。这里至少有一篇关于(反)模式为什么麻烦的文章:

服务定位器是一个反模式

然而,我们一直在成功地使用它。避免过于模糊类依赖关系的一种方法可能是让工厂加载依赖关系并创建类:

public class FooFactory
{
    public void CreateFoo()
    {
        var d = ServiceLocator.Current.GetInstance<IDependency>();
        return new Foo(d);
    }
}
public class Foo
{
    public Foo(IDependency dep)
    {
    }
}