我想知道是否可以通过添加属性来包装方法。
示例:我想记录方法执行的时间。
[LogTimings]
public void work()
{
..
}
这是将方法包装到另一个方法(see this python implementation)。
答案 0 :(得分:8)
在.NET中可以使用AOP。这是关于它的article。这是.NET的list of AOP frameworks。
答案 1 :(得分:4)
答案 2 :(得分:1)
如果使用PostSharp,则无需使用其他编译器即可完成此操作。
答案 3 :(得分:1)
我在.Net上写了一些关于AOP的东西: Help and Information about Aspect Oriented Programming
答案 4 :(得分:1)
仅使用标准.NET框架库,您必须通过派生System.Runtime.Remoting.Proxies.RealProxy
来创建包装功能。
然后,您可以将此功能应用于您的课程,但此课程必须来自System.MarshalByRefObject
。
这是一个相当大的限制,这就是为什么你可能想看看像PostSharp这样的第三方组件。