Csharp/C#教程:动态拦截.NET中的调用分享


动态拦截.NET中的调用

我很想知道.NET是否支持在运行时进行任何forms的方法调用(或属性调用)动态拦截。 也就是说,您是否可以在没有静态编译信息(如接口(沿着CORBA DII( 链接文本 )或COM的IDispatch的行)的情况下拦截对对象的调用)。

如果没有,C#4.0中新的“动态类型对象”function是否有助于此。

没有任何内置function可以拦截您无法控制实例化的对象。 同样,在即将推出的.net 4.0中也没有新设施。

如果你可以控制实例化:

  1. 如果您的对象可以是MarshalByRef,则可以使用RealProxy 。
  2. 您可以使用相当多的IOC容器,例如。 LinFu , Castle动态代理
  3. 您可以使用像PostSharp , Mono Cecil或Microsoft CCI这样的工具来重写您的程序集,并将拦截作为后编译步骤。

如果你无法控制实例化

  1. 您可以使用ICorDebug – .Net调试API,它们真的很难使用且很重。
  2. 您可以使用ICorProfiler – .Net配置文件API也很复杂。

或者,您可以查看IronRuby这样的动态语言,它具有内置的alias_methoddefine_method优点(允许您重新定义任何内容),因此可以进行拦截。


.NET 4.5为ReJIT方法引入了一个方法,它为方法拦截提供了另一个钩子(前提是你没有运行并发/ bg GC,并且该方法没有内联)

查看企业库中的策略注入应用程序块 。

查看.net 4.0动态对象……这可以做到。

https://www.ontheblog.net/CMS/Home/tabid/36/EntryID/77/Default.aspx

上述就是C#学习教程:动态拦截.NET中的调用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1019481.html

(0)
上一篇 2022年1月4日
下一篇 2022年1月4日

精彩推荐