Asi*_*xea 3 c# asp.net-mvc inversion-of-control solid-principles dependency-inversion
我正在asp.net中构建一个简单的MVC应用程序.我想遵循依赖倒置原则,我不知道我是否做得对.
我目前正在研究身份验证系统.我有一个AccountController,里面使用Authenticator服务.Authenticator服务通过构造函数注入注入控制器.
public class AccountController : Controller
{
private IAuthenticator _authenticator;
public AccountController(IAuthenticator authenticator)
{
_authenticator = authenticator;
}
//
// POST: /Account/Login
[HttpPost]
public ActionResult Login(LoginModel model, string redirectToUrl = null)
{
...
}
Run Code Online (Sandbox Code Playgroud)
文件的结构是这样的:

但我想如果我想要完全颠倒控制器及其依赖关系之间的重要性,我将不得不将身份验证服务的接口移到控制器旁边.像这样的东西:

这样,客户端 - 控制器 - 以及服务的抽象将位于同一名称空间中.因此,服务接口的更改将来自客户端,并将传播到服务实现.而不是以前的方式,服务中发生的变化传播到客户端.依赖项是Inverted - 服务依赖于客户端.
当客户端和服务在不同的程序集中时,我可以看到这样做的好处,但是我不确定如果在同一个程序集中我应该这样做.
如果我这样做是正确的,我是否应该使用第一个文件结构或第二个文件结构,请告诉我.
谢谢,阿西尔