东莞餐饮网站建设佛山html5网站建设

bicheng/2026/1/25 12:35:51/文章来源:
东莞餐饮网站建设,佛山html5网站建设,网站克隆镜像做关键字seo,cms建站系统 下载一. IOC和DI 1. 通过Nuget引入Unity程序集。 PS:【版本#xff1a;5.8.6】 2. 新建DIFactory类#xff0c;用来读取Unity的配置文件并创建Unity容器#xff0c;需要注意的是DIFactory类需要声明成单例。 PS#xff1a;这里采用静态构造函数(必须是无参的)的形式来实现单…一. IOC和DI 1. 通过Nuget引入Unity程序集。 PS:【版本5.8.6】 2. 新建DIFactory类用来读取Unity的配置文件并创建Unity容器需要注意的是DIFactory类需要声明成单例。 PS这里采用静态构造函数(必须是无参的)的形式来实现单例MVC框架的那个框架采用的是 双iflock锁的形式实现的单例结果都一样。 代码分享 1 /// summary2 /// 依赖注入工厂单例的 采用静态构造函数3 /// 读取Unity的配置文件并创建Unity容器4 /// 需要引入程序集“System.Configuration”5 /// /summary6 public class DIFactory7 {8 private static IUnityContainer _Container null;9 static DIFactory() 10 { 11 //1. 固定的4行代码读取配置文件 12 ExeConfigurationFileMap fileMap new ExeConfigurationFileMap(); 13 fileMap.ExeConfigFilename Path.Combine(AppDomain.CurrentDomain.BaseDirectory CfgFiles\\UnityConfig.xml);//找配置文件的路径 14 Configuration configuration ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 15 UnityConfigurationSection section (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName); 16 //2. Unity层次的步骤 17 _Container new UnityContainer(); 18 //加载节点的名称为apiContainer 19 section.Configure(_Container, apiContainer); 20 } 21 22 /// summary 23 /// 对外开放函数,用来获取Unity容器 24 /// /summary 25 /// returns/returns 26 public static IUnityContainer GetContainer() 27 { 28 return _Container; 29 } 30 } 3. 新建UnityDependencyResolver类,用来自定义控制器实例化工厂. 特别注意该类这里实现的是IDependencyResolver接口来自WebApi下的程序集而非MVC所以和MVC下的写法有区别. 代码分享 1 public class UnityDependencyResolver : IDependencyResolver2 {3 private IUnityContainer _IUnityContainer null;4 public UnityDependencyResolver(IUnityContainer unityContainer)5 {6 this._IUnityContainer unityContainer;7 }8 9 /// summary 10 /// 获取单个服务 11 /// /summary 12 /// param nameserviceType/param 13 /// returns/returns 14 public object GetService(Type serviceType) 15 { 16 try 17 { 18 return this._IUnityContainer.Resolve(serviceType); 19 } 20 catch (ResolutionFailedException ex)//因为会累计构造多个对象很多是没有去扩展直接null就行 21 { 22 return null; 23 } 24 } 25 26 public IEnumerableobject GetServices(Type serviceType) 27 { 28 try 29 { 30 return this._IUnityContainer.ResolveAll(serviceType); 31 } 32 catch (ResolutionFailedException) 33 { 34 return new Listobject(); 35 } 36 } 37 38 public IDependencyScope BeginScope()//每次请求 39 { 40 var child this._IUnityContainer.CreateChildContainer(); 41 return new UnityDependencyResolver(child); 42 } 43 44 public void Dispose() 45 { 46 this._IUnityContainer.Dispose(); 47 } 48 } 4. 新建CfgFiles文件夹和UnityConfig.xml文件该xml文件需要改属性为“始终复制”。 代码分享 configurationconfigSectionssection nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration//configSectionsunity!-- unity容器配置注册节点--containerscontainer nameapiContainer!-- type中的两个参数分别是类型名称和DLL程序集的名称 --!-- mapTo中的两个参数分别是类型名称和DLL程序集的名称 --!--分析这里我们需要使用的是TestService,但不直接使用它而是使用它的接口即将【mapTo】里的类型注册给【type】里的类型--register typeWebApiBasic.Interface.ITestService,01-WebApiBasic mapToWebApiBasic.Service.TestService,01-WebApiBasic/register typeWebApiBasic.Interface.ITestService2,01-WebApiBasic mapToWebApiBasic.Service.TestService2,01-WebApiBasic//container/containers/unity /configuration 5. 在WebApiConfig文件中进行配置把webapi的DependencyResolver换成自己的Unity版本的 config.DependencyResolver new UnityDependencyResolver(DIFactory.GetContainer()); 6. 新建Service文件夹和Interface文件夹分别创建TestService类和ITestService接口并去UnityConfig.xml文件中进行注册(上述xml里已经注册好了)。 代码如下 1 public class TestService : ITestService 2 { 3 public string GetInfor() 4 { 5 return 我是ypf; 6 } 7 } 1 public interface ITestService 2 { 3 string GetInfor(); 4 } 7. 在控制器中进行构造函数的注入,注入TestService对象。 public class EighthController : ApiController{private ITestService _ITestService null;public EighthController(ITestService testService){this._ITestService testService;}[HttpGet]public string GetInfor(){var result _ITestService.GetInfor();return result;}} 8. 利用PostMan进行测试 http://localhost:2131/api/Eighth/GetInfor 测试成功。 二. AOP 1. 通过Nuget引入Unity.Interception程序集同时会自动把它依赖的Unity.Abstractions程序集引入。 PS【版本5.5.3】 2. 新增TestService2类和ITestService2接口用来测试AOP。 代码如下 1 public interface ITestService22 {3 string GetInfor2();4 }5 public class TestService2 : ITestService26 {7 public string GetInfor2()8 {9 return 我是ypf2; 10 } 11 } 3. 新建AOP文件夹并新建LogBeforeBehavior类实现IInterceptionBehavior接口在Invoke中写AOP相关的代码。 1 /// summary2 /// Unity为我们提供了一个IInterceptionBehavior接口需要实现这个接口3 /// 接口为我们提供了三个方式(GetRequiredInterfaces、Invoke、WillExecute)实现4 /// WillExecute表示是否执行该行为如果是false这个方法被调用时不会被捕捉。因为我们总是要执行的所以为true5 /// GetRequiredInterfaces将你想要的接口类型和行为联系起来我们暂时不需要所以返回Type.EmptyTypes6 /// Invoke执行方式接口,我们主要使用它7 /// /summary8 public class LogBeforeBehavior : IInterceptionBehavior9 { 10 public bool WillExecute 11 { 12 get { return true; } 13 } 14 15 public IEnumerableType GetRequiredInterfaces() 16 { 17 return Type.EmptyTypes; 18 } 19 20 public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext) 21 { 22 Console.WriteLine(我是方法执行前执行的业务); 23 24 //下面这句话表示这里执行方法 25 var result getNext()(input, getNext); 26 return result; 27 } 28 } 4. 在UnityConifig.xml文件中配置AOP相关的代码并且给TestService2注入的代码配置AOP相关的LogAopBehavior类。 代码分享 1 configuration2 configSections3 section nameunity typeMicrosoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration/4 /configSections5 unity6 !--Unity的AOP的相关配置--7 sectionExtension typeMicrosoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration/8 !-- unity容器配置注册节点--9 containers 10 container nameapiContainer 11 !--Unity的AOP的相关配置-- 12 extension typeInterception/ 13 !-- type中的两个参数分别是类型名称和DLL程序集的名称 -- 14 !-- mapTo中的两个参数分别是类型名称和DLL程序集的名称 -- 15 !-- 16 分析这里我们需要使用的是TestService,但不直接使用它而是使用它的接口即将【mapTo】里的类型注册给【type】里的类型 17 -- 18 register typeWebApiBasic.Interface.ITestService,01-WebApiBasic mapToWebApiBasic.Service.TestService,01-WebApiBasic/ 19 register typeWebApiBasic.Interface.ITestService2,01-WebApiBasic mapToWebApiBasic.Service.TestService2,01-WebApiBasic 20 interceptor typeInterfaceInterceptor/ 21 interceptionBehavior typeWebApiBasic.AOP.LogBeforeBehavior,01-WebApiBasic/ 22 /register 23 /container 24 /containers 25 /unity 26 /configuration 5. 用PostMan进行测试 http://localhost:2131/api/Eighth/GetInfor2 通过加断点发现执行方法前先进入了LogBeforeBehavior类中进行执行了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86895.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站开发一般要哪些开发工具织梦设置中英文网站

目录 1、配置国内 Maven 源 配置和检测 settings.xml 配置国内源 2、删除本地 maven 创库的 jar 重新下载 3、其他问题 一般情况下 maven jar 包下载不成功可能有两种情况: 1)没有配置国内源 2)jar 包需要重新下载 下面详细讲解如何解决这两…

商城源码购买网站内部seo优化包括

1、个人思考 几个方面: 新人:选、育、用、留 老人:如何甄别? 团队怎么演进? 有没有什么注意事项 怎么做招聘? 2、 他人考虑 重点: 1、从零开始,讲一个搭建团队的流程 2、标…

网站空间与域名的关系wordpress 门户插件

通信网络安全服务能力评定资质是中国通信企业协会通信网络安全专业委员会(简称通信安委会)颁发的一项专业资质,旨在评定通信网络安全服务单位的服务资格、水平和能力。这项资质对于从事网络安全服务的企业尤为重要,因为它直接反映…

东莞如何建网站费用二手房网签合同在哪个网站做

一 问题描述 最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 Excel 表格:每个表格的都只有一个 sheet,表格的前两行为表格标题及表头,表格的最后一行是相关人员签字。最终目标是将每个表格的内容合并到一个 Excel 表格…

做电影字幕的网站为什么做网站编辑

matlab配置 windowslinux挂载安装MATLAB windows 按照这里一步步配置就行( 移动硬盘中软件备份中自取) linux linux配置步骤 挂载 sudo mount -t auto -o loop /media/oyk/Elements/ubuntu/MATLAB/R2017a_glnxa64_dvd1.iso ./matlab/安装MATLAB 挂载完成后,先…

国外的自建网站怎么做wordpress连接数据库

一、使用vs2017生成sqlserver 2017项目时由于添加的程序集(CLR集成,可以参考后面给出的链接进行理解) ,由于安全权限的配置不正确引发以下的问题: SQL72014: .Net SqlClient Data Provider: Msg 10343, Level 14, State 1, Line 1 针对带有 SAFE 或 EXT…

怎么做网站网站的代理怎么给自己的网站做优化

MySQL数据库认证密码有两种方式:1:MySQL 4.1版本之前是MySQL323加密2:MySQL 4.1和之后的版本都是MySQLSHA1加密还有函数:AES_ENCRYPT()加密函数和AES_DECRYPT()解密函数和MD5()加密。MySQL数据库中自带old_password(str)和password(str)函数,前者是MySQL…

扬州网络科技有限公司网站建设给别人做网站的公司

unsetunsetPolarDB 商业版unsetunset 8 月,PolarDB PostgreSQL 版兼容 PostgreSQL 15 版本(商业版)正式发布上线。 当前版本主要增强优化了以下方面: 改进排序功能:改进内存和磁盘排序算法。 增强SQL功能:支…

软件网站排名濮阳县网

java编写排序的代码在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成。 让我们看看下面的Employee类。 public class Employee {private String name;private Integer age;public Emp…

杭州杭州网站建设wordpress 文件格式

先来看视频实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着互联网的飞速发展,快手已经成为了许多人分享生活、展示才艺的平台。在快手上,如果你想要快速涨粉,就需要掌握一些技巧和方法…

怎么样做公司网站能自己做网站吗

背景:使用mac启动idea项目后异常退出,重新打开IDEA后,启动项目失败原因是 端口被占用。 原因:其实就是IDEA异常退出,但是这个项目还在启动,进程没有退出造成的 解决: 使用jdk自带的工具 jps 找到…

台州知名网站cent wordpress阿里云

Code Review方案 定义 Code Review代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找各种缺陷,包括代码缺陷、功能实现问题、编码合理性、性能优化等;保证软件总体质量和提高开发者自身水平 code review …

网站备案中更名无尺码精品产品

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

自己做网站可以赚钱吗简述动态和静态网页的区别

作者:CSDN _养乐多_ 本文将介绍在 Google Earth Engine(GEE)上生成随机数的 API,可以指定随机数的生成范围、类型(整型、浮点型)、分布方式(均匀分布、正态分布)。 文章目录 一、随…

郑州网站建设 论坛图片链接生成器在线

Stream初相识 概括讲,可以将Stream流操作分为3种类型: 创建Stream Stream中间处理 终止Steam 每个Stream管道操作类型都包含若干API方法,先列举下各个API方法的功能介绍。 开始管道 主要负责新建一个Stream流,或者基于现有的数组…

在线推广是网站推广的首要工具合肥网站开发

$emit和$on进行组件之间的传值 注意:emit和emit和emit和on的事件必须在一个公共的实例上,才能够触发 需求: ​ 1.有A,B,C三个组件,同时挂载到入口组件中 ​ 2.将A组件中的数据传递到C组件,再将…

软件游戏开发公司seo还有哪些方面的优化

概述 在学习QT线程的时候我们首先要知道的是QT的主线程,也叫GUI线程,意如其名,也就是我们程序的最主要的一个线程,主要负责初始化界面并监听事件循环,并根据事件处理做出界面上的反馈。但是当我们只限于在一个主线程上…

潍坊市高新区建设局网站如何知道网站用什么程序做的

回顾2023上半年,人工智能大模型飞速应用于网络攻击与对抗,颠覆传统攻防场景,新型安全威胁凸显;国产化系统漏洞被大规模利用,严重威胁国内用户数据安全与财产安全;个人信息泄露问题频频出现,数据…

西安市城乡建设管理局网站6wordpress文章内页的图片地址修改

复制文件 cp - i file tofile 复制目录 cp - r dic todic转载于:https://www.cnblogs.com/Hero-Qiang/archive/2013/03/20/2971579.html

做wordpress 主题下载站php微信公众号开发

在JetCache中不仅可以通过在类和接口的函数上使用注解Cached、CacheUpdate和CacheInvalidate等实现缓存加载、更新和删除操作,也支持通过调用API接口的形式来实现缓存的加载、更新和删除操作。 缓存接口 缓存接口的定义如下: /*** 缓存接口&#xff0…