我想在控制台应用程序中使用 Ninject。
我有几个程序集,希望能够在所有程序集中使用 ninject。
我已经创建了解析器项目,其中包含我所有的 ninject 模块我在这里还有一个类可以将我的所有模块加载到内核中。
我如何在我的所有模块中访问我的内核?
我读到我可以使用服务定位器模式,但显然这不是一个好的模式。
最佳答案
关于服务定位器模式可能有很多意见。这里至少有一篇关于为什么(反)模式很麻烦的帖子:
Service locator is an anti-pattern
然而,我们一直非常成功地使用它。避免过多混淆类依赖项的一种方法是让工厂加载依赖项并创建类:
public class FooFactory
{
public void CreateFoo()
{
var d = ServiceLocator.Current.GetInstance<IDependency>();
return new Foo(d);
}
}
public class Foo
{
public Foo(IDependency dep)
{
}
}
关于c# - 在非 MVC 应用程序中注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551101/