0

Можно создать дубликат:
Dependency injection through constructors or property setters?Есть ли какие-либо преимущества вложения объектов в инжекцию конструктора?

Я диковинки, если Injection недвижимости имеет какие-либо преимущества по сравнению с Constructor Injection:

public class LoginController : Controller 
    { 
    [Inject] 
    public ICookiesManager CookiesManager {get; set;} 

    [Inject] 
    public ISecurityManager SecurityManager {get; set;} 

    public LoginController() 
    { 

    } 
    } 

против

public class LoginController : Controller 
    { 
    private ICookiesManager _cookiesManager; 
    private ISecurityManager _securityManager; 

    public LoginController(ICookiesManager cookiesManager, ISecurityManager securityManager) 
    { 
     _securityManager = securityManager; 
     _cookiesManager = cookiesManager; 
    } 
    } 

ответ

1

Существует очень мало эффективной разницы в двух шаблонах, кроме как с введением свойств, вы можете заменить реализацию простым набором свойств. При инсталляции конструктора более явным (обычно), что вы не хотите, чтобы кто-либо заменил реализацию во время выполнения (для этого потребуется создать новый LoginController.)

+0

Да, вложение свойств позволяет заменить логику на уже созданные объекты , но это может быть недостатком Property Injection в то же время. Я ищу преимущества :) – Ruslan