-
09-06-2019 - |
解决方案
我只看了很短一段时间的温莎城堡,所以我不能对此发表评论,但我确实使用了 postsharp。
Postsharp 通过在编译时编织来工作。它会在您的构建中添加一个编译后步骤,并在其中修改您的代码。代码的编译就像您刚刚将横切关注点编程到代码中一样。这比运行时编织的性能要高一些,并且由于使用了属性,Postsharp 非常易于使用。我认为在 AOP 中使用属性并不像在 DI 中使用属性那样有问题。但这只是我个人的品味。
但...
如果您已经使用 castle 进行依赖注入,我看不出您不应该将它用于 AOP 的充分理由。我认为虽然 AOP 在运行时比编译时慢一点,但它也更强大。在我看来,AOP 和 DI 是相关的概念,因此我认为对两者使用一个框架是一个好主意。所以我可能会在下一个需要 AOP 的项目中再次查看城堡的内容。
其他提示
PostSharp 的几个小问题...
我在使用 PostSharp 时遇到的一个问题是,在使用 asp.net 时,异常消息的行号会被 PostSharp 注入程序集的 IL 指令数量“超出”,因为 PDB 也没有注入:-)。
此外,如果没有运行时可用的 PostSharp 程序集,则会发生运行时错误。使用 Windsor,可以在以后关闭横切,而无需重新编译代码。
(希望这是有道理的)
不隶属于 StackOverflow