当前位置:
首页 > Python基础教程 >
-
C#教程之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
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式