use*_*193 4 .net c# asp.net-mvc dependency-injection
我在这篇文章中读到他们正在使用依赖注入来在每个mvc请求上加载存储库实例.
我不确定我是否理解正确,但我目前在我的mvc应用程序中使用.UserRepository它实现了IUserRepository接口.此接口注入控制器构造函数
public class UserController : Controller
{
private IUserRepository repository;
public UserController(IUserRepository rep)
{ repository = rep; }
public UserController() : this(new UserRepository()) {}
}
Run Code Online (Sandbox Code Playgroud)
但我没有看到使用这个接口的任何好处(IUserRepository)我可以使用UserRepository没有接口.显然有人认为这是正确的方法(我已经在apress mvc4书上找到了它)我会请求有人详细说明为什么这是更好的方法而不是使用没有接口的存储库.
考虑到这一点,我会请任何人分享有关如何实现此方法的具体示例或链接(使用依赖注入来在每个mvc请求上加载存储库实例).
DI背后的主要思想是强迫你看到大局而不是具体的实现.
您的控制器需要获取用户,但它不应该关心具体实现(您的存储库是从数据库,Web服务,xml文件等中获取用户还是使用Linq2Sql,EntityFramework,Dapper或其他内容)罩).
您的控制器依赖于可以在构造函数,属性或方法中注入的那段代码,但它并不真正关心具体实现.
DI消除了控制器和存储库之间的紧密耦合,允许您通过模拟存储库来编写单元测试,并且您可以轻松地更改存储库的具体实现(例如,使用PetaPoco而不是EntityFramework)而无需触及其余代码.
您还应该看看SOLID原则:http://en.wikipedia.org/wiki/SOLID_( object- oriented_design)
| 归档时间: |
|
| 查看次数: |
1513 次 |
| 最近记录: |