【发布时间】:2016-04-11 13:47:09
【问题描述】:
我想知道是否可以仅通过添加属性来包装方法。
示例:我想记录一个方法的执行时间。
[LogTimings]
public void work()
{
..
}
这是一种将方法包装到另一个方法中的方式 (see this python implementation)。
【问题讨论】:
标签: c# attributes
我想知道是否可以仅通过添加属性来包装方法。
示例:我想记录一个方法的执行时间。
[LogTimings]
public void work()
{
..
}
这是一种将方法包装到另一个方法中的方式 (see this python implementation)。
【问题讨论】:
标签: c# attributes
AOP 在 .NET 中是可能的。这是关于它的article。这是 .NET 的 list of AOP frameworks。
【讨论】:
【讨论】:
仅使用标准 .NET 框架库,您必须通过从 System.Runtime.Remoting.Proxies.RealProxy 派生来创建包装功能。
然后您可以将此功能应用于您的类,但该类必须派生自 System.MarshalByRefObject。
这是相当多的限制,这就是为什么您可能希望查看像 PostSharp 这样的 3rd 方组件。
【讨论】:
如果您使用PostSharp,则无需使用其他编译器即可完成此操作。
【讨论】:
我在 .Net 上写了一些关于 AOP 的东西: Help and Information about Aspect Oriented Programming
【讨论】: