Unity容器中AOP应用示例程序

转发请注明出处:https://www.cnblogs.com/zhiyong-ITNote/p/9127001.html

实在没有找到Unity容器的AOP应用程序示例的说明,在微软官网找到了教程(https://docs.microsoft.com/zh-cn/previous-versions/msp-n-p/dn507492(v%3dpandp.30))看的眼睛疼,而且说得也不是很详细。我自己根据一些资料做了个demo。关键代码:

/// unity container 的AOP可以完成IOC的功能,在我们使用AOP的时候
/// 也就完成了依赖项的实例化。

/// 完成DI
IUnityContainer container = new UnityContainer();
container.RegisterType<IFooRepository, FooRepository>()
    .RegisterType<IBarRepository, BarRepository>();

/// BarSerice的AOP
container.AddNewExtension<Interception>()
    .RegisterType<IFooService, FooService>() /// FooService的AOP
    .Configure<Interception>()
    .SetInterceptorFor<IFooService>(new InterfaceInterceptor());

/// BarSerice的AOP
container.AddNewExtension<Interception>()
    .RegisterType<IBarService, BarSerice>()
    .Configure<Interception>()
    .SetInterceptorFor<IBarService>(new InterfaceInterceptor());

var invoke = container.Resolve<IOCInvoke>();
invoke.Run();
sw.Stop();

Console.WriteLine("花费时间: {0}", sw.Elapsed);

Console.Read();

代码链接:https://pan.baidu.com/s/1QjAMpw55M5Czd3AslMEksw 密码:dz2z

转发请注明出处:https://www.cnblogs.com/zhiyong-ITNote/p/9127001.html

原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/9127001.html

时间: 2024-10-20 14:28:00

Unity容器中AOP应用示例程序的相关文章

在容器中安装新的程序

简介:在docker容器中安装新的程序. 在容器中安装新的程序 目标: 提示: 正确的命令: 在容器中安装新的程序 下一步我们要做的事情是在容器里面安装一个简单的程序(ping).我们之前下载的tutorial镜像是基于ubuntu的,所以你可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping. 备注:apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失. 目标: 在learn/tutorial镜像里面安装ping程序. 提

Unity容器实现AOP面向切面编程

为什么要有AOP 需求总是变化的,比如经常会对一些方法后期增加日志.异常处理.权限.缓存.事务的处理,遇到这种情况我们往往只能修改类. 为了应对变化,我们常常使用设计模式解决,但是也有其局限性:设计模式这能替换整个对象,但是没办法把一个类动态改变.所以我们需要引入AOP的编程思想,因为它允许开发者动态的修改静态的OO模型,构造出一个不断增长,不断变化的需求. AOP是一种编程思想,是对OOP面向对象编程思想的补充. 使用AOP编程可以方便我们聚焦一些核心业务逻辑,比如权限.异常.日志.缓存.事务

Docker容器中安装新的程序

在容器里面安装一个简单的程序(ping). 之前下载的是ubuntu的镜像,则可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping. $docker run ubuntu apt-get install -y ping 注意:在执行apt-get 命令的时候,要带上-y参数.如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的.

在 Docker 容器中运行应用程序

案例说明 运行 3 个容器,实现对网站的监控. 三个容器的说明: 容器 web: 创建自 nginx 映像,使用 80 端口,运行于后台,实现 web 服务. 容器 mailer: 该容器中运行一个 mailer 程序,运行于后台,当接收到事件后会向管理员发送邮件. 容器 agent: 该容器运行一个 watcher 程序,以交互模式运行,用于不断地监测 web 服务的运行情况,一旦出现故障会立即向 mailer 容器发送消息. 创建容器 创建并运行 web 容器 $ docker run --

Supervisor-容器中启动多个程序

背景: 之前在容器中启动多个程序时,将启动命令写到一个脚本中,然后执行脚本,又因为执行脚本后,就退出了,没有启动1号进程(容器启动时需要保持Docker容器的1号进程始终运行,否则启动不成功),容器始终启动不起来,后来发现如果想运行多个程序的话,可以通过supervisord来操作,很容易实现. Supervisor说明: Supervisor是由python语言编写,基于linux操作系统的一款服务器管理工具,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能. Supervisor

DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自

DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版--------------------------------------------------------- 基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成. 安装之后,直接就可以用了. 省心省事.不必再单独的打一次补丁包了. 本安装包和补丁包一样都删除了

DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版原创发布-带官方示例程序版

关于 DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自带

Unity容器在asp.net mvc中的IOC应用及AOP应用

<asp.net-mvc框架揭秘>一书中,有个示例,是使用unity容器来注入自定义的控制器工厂.代码示例可以自己去下载源码,在这里我就不说了.IOC容器的本质是解耦的实例化接口类,而如何做到解耦就是通过第三方容器来实例化,在这里是unity容器,而不是在项目中实例化接口类.实例化的方法无非就是反射,Emit,表达式树,委托等四个方法.Unity容器的IOC使用主要是三个个方法:Register,Resolver,Dispose.前者注册接口和接口类,后者将接口类的实例化转移到第三方容器中实现