Как установить свойство или переменную в конструкторе с Ninject (веб-приложение MVC3)? - PullRequest
0 голосов
/ 25 мая 2011

У меня есть интерфейс ITest и класс Test, который реализует ITest:

public Test : ITest{...}

У меня есть такой класс:

public class MyClass
{
 ITest test;
 public MyClass(){...}
}

Есть ли способ установить новый пример Test () впроверить переменную с Ninjection?Я хочу избавиться от этого кода в конструкторе:

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

Спасибо!

1 Ответ

0 голосов
/ 25 мая 2011

Я бы рекомендовал использовать инжектор конструктора, например:

public class MyClass {
    private readonly ITest _test;

    [Inject]
    public MyClass(ITest test) {
        _test = test;
    }
}

Это обеспечивает видимость зависимости класса, т. Е. MyClass зависит от экземпляра ITest.Ninject будет автоматически обрабатывать эту инъекцию зависимостей для вас, если вы зарегистрировали экземпляр ITest в контейнере.

В качестве альтернативы, вы можете использовать инъекцию свойства / поля:

public class MyClass {
    public MyClass() { }

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

public class MyClass {
    [Inject] private ITest _test;

    public MyClass() { }
}
...