0

可能重复:
通过构造函数或属性设置器进行依赖注入?

如果Property 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;
    }
  }
4

1 回答 1

1

除了属性注入之外,这两种模式几乎没有什么有效的区别,您可以用简单的属性集替换实现。使用构造函数注入,更明确(通常)不希望任何人在运行时替换实现(因为这样做需要创建一个新的 LoginController。)

于 2012-05-06T14:06:00.987 回答