(精华)2020年8月17日 微服务 WebApi注入unity容器实现面向切面
发布日期:2021-06-29 15:10:04
浏览次数:2
分类:技术文章
本文共 3369 字,大约阅读时间需要 11 分钟。
控制器中使用
public class IOCController : ApiController{ private IUserService _UserService = null; public IOCController(IUserService userService) { this._UserService = userService; } public string Get(int id) { //IUserService service = new UserService(); //IUserService service = ContainerFactory.BuildContainer().Resolve(); return Newtonsoft.Json.JsonConvert.SerializeObject(this._UserService.Query(id)); }}
DI注入相关类
public class UnityDependencyResolver : IDependencyResolver{ private IUnityContainer _UnityContainer = null; public UnityDependencyResolver(IUnityContainer container) { _UnityContainer = container; } public IDependencyScope BeginScope()//Scope { return new UnityDependencyResolver(this._UnityContainer.CreateChildContainer()); } public void Dispose() { this._UnityContainer.Dispose(); } public object GetService(Type serviceType) { try { return ContainerFactory.BuildContainer().Resolve(serviceType); } catch (Exception ex) { Console.WriteLine(ex.Message); return null; } } public IEnumerable
////// 需要在nuget引用之后,单独引用Unity.Configuration/// 如果有AOP扩展,还需要引用Unity.Interception.Configuration/// 因为我们是用配置文件来做的配置/// public class ContainerFactory{ public static IUnityContainer BuildContainer() { //get //{ return _Container; //} } private static IUnityContainer _Container = null; static ContainerFactory() { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config");//找配置文件的路径 Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName); _Container = new UnityContainer(); section.Configure(_Container, "WebApiContainer"); }}
路由注入
public static class WebApiConfig{ public static void Register(HttpConfiguration config) { // Web API 配置和服务 config.DependencyResolver = new UnityDependencyResolver(ContainerFactory.BuildContainer()); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi",//默认的api路由 routeTemplate: "api/{controller}/{id}",//正则规则,以api开头,第二个是控制器 第三个是参数 defaults: new { id = RouteParameter.Optional } ); // config.Routes.MapHttpRoute( // name: "CustomApi",//默认的api路由 // routeTemplate: "api/{controller}/{action}/{id}",//正则规则,以api开头,第二个是控制器 第三个是参数 // defaults: new { id = RouteParameter.Optional } //); }}
转载地址:https://codeboy.blog.csdn.net/article/details/108055246 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年05月01日 20时54分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python 利用os和shutil复制系统文件
2019-04-29
Python 循环输出菱形字符串
2019-04-29
MySQL常见错误总结
2019-04-29
pymysql 的基础应用
2019-04-29
Html+Css实现 启橙装饰网 项目
2019-04-29
JavaScript 实现哥德巴赫猜想
2019-04-29
JavaScript DOM
2019-04-29
Python 管理程序改进——连接MYSQL
2019-04-29
Python 爬虫
2019-04-29
Python 爬虫-百度风云榜的电影top50
2019-04-29
Python 爬虫-豆瓣影星图片下载
2019-04-29
Excel数据基础操作
2019-04-29
网页端数据库操作界面—主题函数文件
2019-04-29
网页端数据库操作界面-Html页面(1)
2019-04-29
网页端数据库操作界面-Html页面(2)
2019-04-29
网页端数据库操作界面-Html页面(3)
2019-04-29
Excel 高级筛选
2019-04-29
Python爬虫 百度热搜热点
2019-04-29
Python 百度热搜 全页面爬取
2019-04-29
爬取小说——爬取书的地址
2019-04-29