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

来源:转载

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

分享给朋友:
您可能感兴趣的文章:
随机阅读: