unity(c# ioc框架) 使用总结

2018-02-13 19:55:40来源:cnblogs.com作者:axel10人点击

分享

这里的unity指的是完成依赖注入的unity而不是游戏引擎。

原本项目完成依赖注入用的是spring.net,但是spring.net已经很久没人维护了,所以微软官方推出的Unity成为了替代spring.net的最佳候选之一。

简单控制台demo:

首先新建控制台应用,nuget搜索unity并安装。

using System;  using Unity;using Unity.Attributes;namespace ConsoleApp1{    public class Index    {                [Dependency]        public virtual IUserService UserService { set; get; }        public static void Main(string[] args)        {            var container = new UnityContainer();            container.RegisterType<IUserService, UserService>();           //注册            IUserService userService = container.Resolve<IUserService>();  //获取            userService.Hello();        }    }    public interface IUserService    {        void Hello();    }    class UserService : IUserService    {        public void Hello()        {            Console.WriteLine("hello");        }    }}

在asp.net mvc里使用unity:

1、新建asp.net mvc应用,nuget安装unity.mvc

2、新建类库BLL、IBLL,完成后目录如下:

3、BLL新建UserService,IBLL新建IUserService,实现Hello方法

namespace IBLL{    public interface IUserService    {        string Hello();    }}
using IBLL;namespace BLL{    public class UserService:IUserService    {        public string Hello()        {            return "hello";        }    }}

4:在Global.asax.cs里填写配置。示例如下:

using System.Web.Mvc;using System.Web.Optimization;using System.Web.Routing;using BLL;using IBLL;using Unity;using Unity.AspNet.Mvc;namespace WebApp{    public class MvcApplication : System.Web.HttpApplication    {        protected void Application_Start()        {            AreaRegistration.RegisterAllAreas();            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            RouteConfig.RegisterRoutes(RouteTable.Routes);            BundleConfig.RegisterBundles(BundleTable.Bundles);            var container = BuildUnityContainer();        //自定义BuildUnityContainer方法,获取容器            DependencyResolver.SetResolver(new UnityDependencyResolver(container));        }        IUnityContainer BuildUnityContainer()        {            UnityContainer container = new UnityContainer();            container.RegisterType<IUserService, UserService>();return container;        }    }}

5、在Control中获得UserService类并使用

using System.Web.Mvc;using IBLL;namespace WebApp.Controllers{    public class HomeController : Controller    {        private IUserService UserService;public HomeController(IUserService userService)        {            this.UserService = userService;   //使用构造函数注入        }        public ActionResult Index()        {            string str = UserService.Hello();            return Content(str);        }    }}

这样就完成了一个最简单的mvc demo。

别的如使用配置文件、使用其他方法注入等详细操作,可以参考这篇博文:https://www.cnblogs.com/qqlin/archive/2012/10/18/2720828.html

unity官方文档:https://msdn.microsoft.com/en-us/library/ff649564.aspx

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台