C#中怎样实现类似Python中的装饰器( 二 )
执行结果:test for Actionfunction startdo some actionfunction endtest foc Funcfunction startdo some funcfunction endthe result is:13——————————————————————————————听起来可以根据面向切面的思想解决。\t\t\t\tProxyClass.Action(param =\u0026gt;\t\t\t\t{param.Method(data);\t\t\t\t});var result=ProxyClass.Func(param =\u0026gt;{return param.Method(data);});类似这种的可不可以?自己实现一个ProxyClass类,提供无返回有泛型返回两个静态方法(想要的function start和function end都在这两个方法里处理),参数是一个委托。在调用时可以直接调这两个方法,然后在委托参数里调用function。或者可以参考一下Attribute【特性】,给相关方法打上自定义的特性,然后在调用时统一处理。
■网友
请搜索.Net下的AOP框架,比如 Castle Windsor - https://github.com/castleproject/Windsor/blob/master/docs/README.md
■网友using System;using Castle.DynamicProxy;namespace ConsoleApp1{ public class Program { public static void Main(string args) { ProxyGenerator proxy = new ProxyGenerator(); Interceptor interceptor=new Interceptor(); var handler = proxy.CreateClassProxy\u0026lt;Program\u0026gt;(interceptor); handler.DoSomething(); Console.ReadKey(); } public virtual void DoSomething() { Console.WriteLine("Do Something"); } public class Interceptor : IInterceptor { public void Intercept(IInvocation invocation) { Console.WriteLine("Function Start"); try { invocation.Proceed(); } catch (Exception) { Console.WriteLine("Target threw an exception!"); throw; } finally { Console.WriteLine("Function End"); } } } }}
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 北京22家市属医院均开展安检基本实现重点区域安检措施全覆盖
- 长江流域渔民退捕“上岸”实现扩产新致富
- 实现“甜蜜计划”,这对中哈跨国夫妻好甜
- 北京地铁11号线西段三座车站提前实现主体结构封顶
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
