有没有办法让项目中的每个类都实现一个接口(不进行批量查找和替换)

时间:2013-02-08 09:27:56

标签: c# reflection metaclass

有没有办法做这样的事情:In Groovy Is there a way to decorate every class to add tracing?但在C#中。由于C#不支持metaClass,所以我不知道如何做到这一点。如果我可以使这个解决方案工作,那么我将使用反射迭代每个类并使其实现接口。

谢谢,

1 个答案:

答案 0 :(得分:2)

是的,您可以使用动态代理。

你为什么不看看Castle DynamicProxy? http://www.castleproject.org/projects/dynamicproxy/

或者PostSharp,如果你想以更清洁的方式利用AOP:

http://www.sharpcrafters.com/postsharp/documentation

更新

OP在一些评论中表示:

  

啊,我实际上是在使用PostSharp来输出调用的方法和   什么时候。我要避免不得不做的是添加一个   属性到我的代码中的每个类。所以我想我可以创造   像这样的接口:[MyAttribute] public interface IDebug {} And   让我的类在运行时实现这个接口。

PostSharp支持汇编级方面:[assembly:YourAspect]。稍后,在您的方面,您可以检查调用的方法和属于哪个对象,并根据具体情况完成整个工作。