c# – Asp.Net MVC 4.0或更高版本中依赖注入的最佳方法是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Asp.Net MVC 4.0或更高版本中依赖注入的最佳方法是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2227字,纯文字阅读大概需要4分钟。
内容图文
![c# – Asp.Net MVC 4.0或更高版本中依赖注入的最佳方法是什么?](/upload/InfoBanner/zyjiaocheng/756/a66e1715fc02428fb0518f0354f2dc5d.jpg)
任何人都可以解释我何时以及为什么要使用依赖注入?
哪个是DI的最佳方法?
当我搜索并发现许多框架时,其中一些如下: –
http://www.hanselman.com/blog/ListOf-NETDependencyInjectionContainersIOC.aspx
但我很困惑哪一个是最好的.
以及IOC和DI有什么区别?
谁在这里,谁可以帮助我?
提前致谢 .
解决方法:
依赖注入
OOP中的对象通常依赖于其他对象.也就是说,类会引用其他类,因为它们需要使用它们来完成它们的工作.
例如,假设我们有一个Customer类. Customer对象能够使用GetDetails()方法从数据库中检索详细信息.
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public Customer()
{
}
public void GetDetails()
{
Database db = new Database();
return db.GetCustomer(this.Id).Details;
}
}
这是不好的.客户和数据库是tightly coupled.这意味着客户对数据库了解太多;它完全依赖于它.
如果Database对象具有更多构造要求,则问题会更加严重.
想象一下:
public void GetDetails()
{
Database db = new Database("localhost", "3306", "username", "password", "database");
return db.GetCustomer(this.Id).Details;
}
这更糟糕.现在,Customer类正在做更多事情.如果每个类都在创建一个Database对象,那么这很快就会变得难看.如果Database类发生更改,这很难维护并且代码会中断.假设我们不再需要在构造对象时提及端口,或者我们可能添加一些参数.
最终,Customer类不应该对数据库了解太多.真的,它并不关心.它只是想使用数据库.
让我们改变我们的客户以使用依赖注入.
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
private IDatabase db { get; set; }
public Customer(IDatabase db)
{
this.db = db;
}
public void GetDetails()
{
return db.GetCustomer(this.Id).Details;
}
}
这种技术称为构造函数注入.我们通过构造函数注入依赖项.现在,客户不知道进入的数据库类型,创建方式或实际情况.所有客户都知道它符合IDatabase接口和接口提供的方法.大!
使用哪个DI容器?
but I’m very confused that which one is the best.
对于像你我这样的人来说,这并不重要.他们都以略微不同的方式做同样的事情.除非你有一个理由,选择一个易于使用,受欢迎且有很多(社区)支持的理由.
就个人而言,我使用Castle Windsor.我听说过关于Ninject,Autofac,StructureMap和Unity的好消息.
IoC vs DI
IoC表示控制反转.
DI表示依赖注入.
依赖注入是实现控制反转的一种方式.也就是说,DI是IoC的一种技术.
在我们的Customer类示例中,它是创建和管理Database对象. Customer对象正在控制Database对象.
当我们实现依赖注入时,我们反转或反转该控制,以便在其他地方处理数据库的控制.
内容总结
以上是互联网集市为您收集整理的c# – Asp.Net MVC 4.0或更高版本中依赖注入的最佳方法是什么?全部内容,希望文章能够帮你解决c# – Asp.Net MVC 4.0或更高版本中依赖注入的最佳方法是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。