代码如下

//使用说明
//1,新加接口与类
//2,新加类并实现ICallHandler类: ExecuteHandler
//3,新建特性并实现HandlerAttribute和重写其中的CreateHandler方法:ExecuteAttribute
//4,在接口上使用ExecuteAttribute特性
//5,在调用之前应设置拦截类,没有第二句代码,方法不会进入到ExecuteHandler.Invoke方法中
// var container1 = new UnityContainer().AddNewExtension<Interception>().RegisterType<Interface1, Class1>();
// container1.Configure<Interception>().SetInterceptorFor<Interface1>(new InterfaceInterceptor());
//6,调用
//注:第5,6说的就是 Main里面的方法。 using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.InterceptionExtension;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var container1 = new UnityContainer().AddNewExtension<Interception>().RegisterType<Interface1, Class1>();
container1.Configure<Interception>().SetInterceptorFor<Interface1>(new InterfaceInterceptor()); var sample1 = container1.Resolve<Interface1>();
sample1.Add();
Console.ReadLine();
}
} [Execute]
public interface Interface1
{
void Add();
void Delete();
} public class Class1:Interface1
{
public void Add()
{
Console.WriteLine("Add成功!");
} public void Delete()
{
Console.WriteLine("Delete成功!");
}
} public class ExecuteHandler : ICallHandler
{
public int Order
{
get;
set;
} public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
//getNext()(input,getNext)就是具体的执行方法。在这之前或之后你可以做一些其它事情,如记录日志,判断是否有权限操作之类的。
var retvalue = getNext()(input, getNext);
return retvalue;
}
} public class ExecuteAttribute : HandlerAttribute
{
public override ICallHandler CreateHandler(Microsoft.Practices.Unity.IUnityContainer container)
{
return new ExecuteHandler();
}
}
}

代码下载

最新文章

  1. FPGA图像处理 两路sensor的色调不一致
  2. ue4 c++ 接口
  3. 控制台程序实现利用CRM组织服务和SqlConnection对数据库中数据的增删改查操作
  4. UITabelView 高级(自定义Cell)
  5. Firefly官方教程之Netconnect使用文档
  6. OAuth 的权限问题与信息隐忧
  7. [SAM4N学习笔记]按键程序(中断方式)
  8. 伪协议触发onbeforeunload
  9. sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间
  10. bzoj2194 快速傅立叶之二 ntt
  11. 新书出版 |《Oracle程序员面试笔试宝典》
  12. windows 下 redis安装
  13. Error &#39;LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or cor
  14. java-mybaits-00103-入门程序原生的【查、增、删、改】
  15. machine_learning-knn算法具体解释(近邻算法)
  16. Java中关于枚举的7种用法
  17. C#封装的一个JSON操作类
  18. Data Flow -&gt;&gt; Excel Connection遇到错误:[Excel Source [16]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.....
  19. atitit. 分销系统规划p8k
  20. spring新心得

热门文章

  1. WPF中控制窗口显示位置的三种方式
  2. 阿里巴巴Java开发手册-集合处理
  3. Spring的IOC原理 通俗解释
  4. 接口测试maven管理
  5. apache 服务器在ubuntu上图片无法显示解决
  6. 初次从eclipse转到intellij idea上的一些经验
  7. php array_flip() 删除数组重复元素——大彻大悟
  8. NOIP考前复习-数制转换,数论模板与文件读写
  9. Solr --- Group查询与Facet区别
  10. html_table表格