這裡的unity指的是完成依賴註入的unity而不是游戲引擎。 原本項目完成依賴註入用的是spring.net,但是spring.net已經很久沒人維護了,所以微軟官方推出的Unity成為了替代spring.net的最佳候選之一。 簡單控制台demo: 首先新建控制台應用,nuget搜索unity並 ...
這裡的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