DI 依赖注入之unity(mvc)
一.nuget下载安装:
使用Nuget安装Unity.MVC
安装完成后会在~/App_Start/目录下自动生成UnityMvcActivator.cs和UnityConfig.cs文件
二.配置:
打开UnityConfig文件,修改RegisterTypes()方法的代码
public static void RegisterTypes(IUnityContainer container) { // NOTE: To load from web.config uncomment the line below. // Make sure to add a Unity.Configuration to the using statements. // container.LoadConfiguration(); // TODO: Register your type‘s mappings here. // container.RegisterType<IProductRepository, ProductRepository>(); //增加自己需要注入的接口和接口的实现类 container.RegisterType<IUserDAL, UserDAL>(); container.RegisterType<IUserBLL, UserBLL>(); }
二.使用:【注意对比之间的区别及实现方式,会比较容易学习】
1.代码方式注入
(1)构造函数注入(推荐):
public class UserController : Controller { public UserController(IUserBLL userBLL) { this.userBLL = userBLL; } IUserBLL userBLL; // GET: User public ActionResult Index() { var list = userBLL.GetUserModels(); return View(list); } }
(2)属性注入:
namespace ZLP.Web.Controllers { public class UserController : Controller { [Dependency] public IUserBLL userBLL { get; set; } // GET: User public ActionResult Index() { var list = userBLL.GetUserModels(); return View(list); } } }
错误:System.NullReferenceException:“未将对象引用设置到对象的实例。”
解决方法:
1.给要注入的属性增加Dependency特性,切记
2.引用是否是using Unity命名空间下的,别选错了(using System.Runtime.CompilerServices;)
3.属性的访问修饰符是否用public
(3)方法注入:
2.配置文件注入(推荐)
三.常见问题:
原文地址:https://www.cnblogs.com/zlp520/p/12019360.html
时间: 2024-11-08 11:36:14