2010-02-05 17 views

回答

8

AOP在.NET中是可行的。这是关于它的article。这里是一个用于.NET的list of AOP frameworks

+6

虽然这可能在理论上回答这个问题,但[这将是更可取的](http://meta.stackoverflow.com/q/8259)在这里包括答案的基本部分,并提供供参考的链接。 –

4

看看PostSharp,.NET的AOP框架。

在日志记录和时间方面,还有一个名为Gibraltar的框架,它与PostSharp集成在一起,它可以更容易地收集和使用结果。我一直在努力尝试它......

+0

我不知道这些框架是否都是基于反思。另外,这里的PostSharp.org链接已经改为https://www.postsharp.net/ – matrixugly

+0

@matrixugly:修正了链接,但不是,你不能用反射做所有这些 - 你需要重写IL,基本上。 –

+0

这就是我收集的。我不喜欢第三方(甚至是我自己的)在发布的代码中使用库的想法。听起来像PostSharp实际上扫描IL。我想知道这个简单版本是否可以加载程序集并使用反射来发出dll的“AOP -ized”版本。 (这样就没有IL的扫描了吗?) – matrixugly

1

如果您使用PostSharp,则无需使用其他编译器即可完成此操作。

1

仅使用标准的.NET框架库,你就必须从System.Runtime.Remoting.Proxies.RealProxy派生来创建换行功能。

此功能然后可以适用于您的班级,但此类必须从System.MarshalByRefObject派生。

这是相当多的限制,这就是为什么你可能想看看PostSharp等第三方组件。