Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 正确使用ninject的方法_Asp.net Mvc_Design Patterns_Ninject - Fatal编程技术网

Asp.net mvc 正确使用ninject的方法

Asp.net mvc 正确使用ninject的方法,asp.net-mvc,design-patterns,ninject,Asp.net Mvc,Design Patterns,Ninject,互联网上对ninject的定义之一是 在应用程序中间的某个地方,您正在创建一个类 在另一个班级里。这意味着您正在创建一个依赖项。 依赖项注入通常是关于传递这些依赖项 通过构造函数,而不是嵌入它们 我想了解的是,我们在另一个类中看到一个类的创建时,我们应该使用ninject还是应该在程序的某个部分中使用ninject,我们希望/需要在设计中应用松散耦合,因为将来可能会使用不同的方法 对不起,如果这是一个愚蠢的问题 这是一个完全正确的问题,没有绝对正确或错误的答案。Ninject和其他IoC框架旨在

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

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

我想了解的是,我们在另一个类中看到一个类的创建时,我们应该使用ninject还是应该在程序的某个部分中使用ninject,我们希望/需要在设计中应用松散耦合,因为将来可能会使用不同的方法


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

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

所以当你这么做的时候:

public class MyClass1
{
    public MyClass1()
    {
        MyClass2 mc2 = new MyClass2();
    }
}
您可以明确地说,MyClass1在MyClass2中有一个依赖项

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

如果我不需要对它进行单元测试,那么我就不会发现将这两个类解耦有多大价值

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

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


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

如果您想学习依赖注入,一定要阅读。@Steven好的,谢谢。我会的。这是:我们应该在程序的某个部分中使用,我们希望/需要在设计中应用松耦合,因为将来我们可能会使用不同的方法