这里的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