【问题标题】:ways of using ninject properly正确使用ninject的方法
【发布时间】:2015-08-26 10:54:42
【问题描述】:

互联网对ninject的定义之一是;

“在你的应用程序中间的某个地方,你正在创建一个类 在另一个班级里面。这意味着您正在创建依赖项。 依赖注入是关于传递这些依赖项,通常 通过构造函数,而不是嵌入它们。”

我想学习的是,如果我们看到在另一个类中创建一个类,我们应该使用 ninject 还是应该在我们想要/需要为设计目的应用松散耦合的程序的某些部分中使用,因为也许我们想在未来使用不同的方法吗?

对不起,如果这是一个愚蠢的问题。

【问题讨论】:

  • 如果你想学习依赖注入,你一定要阅读Dependency Injection in .NET
  • @Steven 好的,谢谢。我会的。
  • this:“只是我们应该在程序的某些部分使用我们希望/需要为设计目的应用松散耦合,因为也许我们希望在未来使用不同的方法”

标签: asp.net-mvc design-patterns ninject


【解决方案1】:

这是一个完全有效的问题,没有绝对正确或错误的答案。 Ninject 和其他 IoC 框架旨在解耦依赖关系。

所以当你这样做的时候:

public class MyClass1
{
    public MyClass1()
    {
        MyClass2 mc2 = new MyClass2();
    }
}

你可以断然的说 MyClass1 在 MyClass2 中有一个依赖。

对我来说,我的规则是:我需要对 MyClass1 进行单元测试,还是可能需要对 MyClass1 进行单元测试?

如果我不需要对它进行单元测试,那么我认为解耦这两个类没有多大价值。

但是,如果我确实需要对 MyClass1 进行单元测试,那么注入 MyClass2 可以让您更好地控制单元测试(并允许您单独测试 MyClass1)。

不过,您确实需要分别评估每个案例。在上面的例子中,如果我需要对 MyClass1 进行单元测试,而 MyClass2 只是一个基本的字符串格式化类,那么我可能不会解耦它。但是,如果 MyClass2 是一个电子邮件发送类,那么我会将它解耦。我不希望我的单元测试实际上发送电子邮件,所以我会为我的测试提供一个假的。

所以我不相信有任何可靠的规则,但希望以上内容能让您更好地了解什么时候可以解耦,什么时候不可以解耦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多