Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
C# 如何使用Ninject(MVC3 web应用程序)在构造函数中设置属性或变量?_C#_Asp.net Mvc_Ninject - Fatal编程技术网

C# 如何使用Ninject(MVC3 web应用程序)在构造函数中设置属性或变量?

C# 如何使用Ninject(MVC3 web应用程序)在构造函数中设置属性或变量?,c#,asp.net-mvc,ninject,C#,Asp.net Mvc,Ninject,我有接口ITest和类Test,它们实现了ITest: public Test : ITest{...} 我有这样的课: public class MyClass { ITest test; public MyClass(){...} } 有没有办法用Ninjection在测试变量中设置新的Test()示例?我想在构造函数中删除此代码: public MyClass() { test = new Test(); } 谢谢 我建议您使用构造函数注入,例如: public class M

我有接口ITest和类Test,它们实现了ITest:

public Test : ITest{...}
我有这样的课:

public class MyClass
{
 ITest test;
 public MyClass(){...}
}
有没有办法用Ninjection在测试变量中设置新的Test()示例?我想在构造函数中删除此代码:

public MyClass()
{
 test = new Test();
}

谢谢

我建议您使用构造函数注入,例如:

public class MyClass {
    private readonly ITest _test;

    [Inject]
    public MyClass(ITest test) {
        _test = test;
    }
}
这提供了类依赖关系的可见性,即
MyClass
依赖于
ITest
的实例。只要您已经向容器注册了
ITest
的实例,Ninject就会自动为您处理此依赖项注入

或者,您可以使用属性/字段注入:

public class MyClass {
    public MyClass() { }

    [Inject]
    public ITest Test { get; set; }
}

public class MyClass {
    [Inject] private ITest _test;

    public MyClass() { }
}

你能解释第二个例子吗?我试过了,但在我的应用程序中不起作用。我想在属性中设置Test()的示例,但属性值始终为null。