AOP预编织时间编织?

Tho*_*ler 5 c# compiler-construction aop postsharp

我和AOP一起玩了多年,但并没有对这些解决方案百分百满意.具有运行时编织的AOP框架(如Spring.AOP)无法更改类的接口.随着后编译时间像Postsharp这样的框架(任何人都知道别人吗?)你可以.检查此示例,它将INotifyPropertyChanged实现添加到您的类.- > http://www.postsharp.net/model/inotifypropertychanged

这个AOP功能真的很棒,但你很快就会遇到麻烦...如果你想访问主机程序集中的新接口,你就无法编译,因为在编译后添加了接口.所以你得到一个"未定义PropertyChanged" - 错误.所以你必须通过将类分成另一个程序集来解决这个问题,这样你才能使用这些AOP优势.我记得,我使用T4模板运行相同的"后编译时间" - 根据程序集的反射信息生成源代码.好的,所以编译后的时间有时太晚了......

我正在寻找的是一个解决方案,通过visual studio用户定义的工具解析类的源代码,然后在部分类中的C#文件中生成代码.(所以所有AOP应用的类都必须是部分的)

所以它的"预编译时间AOP".这绝对是可能的,并且可以通过使用NRefactory作为Code Parser来完成.此外,Visual Studio比编译后修改更喜欢这个.

因此,该解决方案消除了编译后编织器的缺点.但并没有给你AOP的所有功能.但是与AOP-Framework一起,这应该是非常棒的.

有谁知道像这样的框架,还是讨论?!你怎么看 ?

亲切的问候,托马斯

Gae*_*eur 0

对于 PostSharp,您可以使用方法访问在编译后引入的接口Post.Cast,该方法是一种在编译后验证的强制转换运算符。有关文档,请参阅http://doc.postsharp.net/postsharp-3.0/Content.aspx/PostSharp-3.0.chm/html/M_PostSharp_Post_Cast__2.htm 。