dependency-injection - 依赖注入(inject)框架 : Why do I care?

标签 dependency-injection ninject c#

我正在阅读 Injection by HandNinjection (以及 Why use Ninject )。我遇到了两个困惑:

  1. 手动注入(inject)技术我已经很熟悉了,但我对 Ninjection 不熟悉,因此不确定完整的程序如何工作。也许提供一个完整的程序会有所帮助,而不是像该页面上所做的那样,将程序分解成多个部分

  2. 我仍然不明白这如何让事情变得更简单。我想我错过了一些重要的东西。如果您正在创建一组注入(inject)然后同时在两个大组之间切换(这对于模拟等很有用),我可以看出注入(inject)框架会有多大帮助,但我认为还有更多比起那个来说。但我不确定是什么。或者,也许我只需要更多例子来说明为什么这很令人兴奋,以阐明这一点。

最佳答案

在没有 DI 框架的情况下注入(inject)依赖项时,您最终会在整个应用程序中看到箭头代码,告诉类如何构建它们的依赖项。

    public Contact()
        : this(new DataGateWay())
    {
    }

但是如果你使用像 Ninject 这样的东西,所有的箭头代码都在一个地方,这样可以更容易地改变所有使用它的类的依赖关系。

internal class ProductionModule : StandardModule
{
    public override void Load()
    {
        Bind<IDataGateway>().To<DataGateWay>();
    }
}

关于dependency-injection - 依赖注入(inject)框架 : Why do I care?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952180/

相关文章:

c# - 代码优先 Entity Framework 无法更新多对多相关实体

dependency-injection - Dependency Injection,将一个 "injectable"的对象(服务)注入(inject)到一个newable(实体)中

jsf - 如何注入(inject)@FacesConverter?

c# - Ninject,多个服务绑定(bind)

redis - ServiceStack 的 IRedisClientManager + Ninject - 使用 InSingletonScope?

c# - 如何根据第一个ListView中选择的值显示第二个ListView?

javascript - Nest 无法解析 RestController 的依赖关系

java - 如何在没有任何 XML 和 spring 特定注释的情况下使用 JSR 330 和 Spring 作为实现?

ninject - 在 Ninject 2 中,如何让两个具有不同设置的内核共享绑定(bind)?

c# - 命名空间 'FriendlyUrls' 中不存在类型或命名空间名称 'Microsoft.AspNet'