DI 依赖注入之unity(mvc)

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.配置文件注入(推荐)

三.常见问题:

猜你喜欢

转载自www.cnblogs.com/zlp520/p/12019360.html