c# - 在非 MVC 应用程序中注入(inject)

标签 c# ninject

我想在控制台应用程序中使用 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/

相关文章:

c# - Toast 通知不起作用?

c# - SQL Server DB 到 Entity Framework Code First 的转换器

c# - 如何以编程方式获取我的 Windows 服务的版本信息

dependency-injection - 我正在为 .net 寻找一个简单但实​​用且强大的 IOC/DI 框架

dependency-injection - ActionFilterAttribute ninject 注入(inject) - DbContext 已被释放

asp.net-mvc - 忍者不开火?

c# - 大数据表总是抛出System.outofmemoryexception

c# - 从散列值中取回值?

ioc-container - Ninject:为 AoP 代理类型时可以使用注入(inject)构造函数吗?

dependency-injection - 如何创建一个返回相同对象的 Ninject 自定义范围,直到该对象被释放?