这是一个关于 PostSharp 使用的假设问题。
我假设如果由于任何原因错过了构建的 PostSharp 部分,这些属性将被忽略并且构建的程序集仍然可以运行。如果我用方面实现安全性,这将是一个大问题。
如何在运行时确认构建的 PostSharp 阶段发生并且我的方面在程序集中?
PostSharp.Post.IsTransformed
您可以在运行时进行评估。如果程序集已转换,则对该属性的调用将更改为仅常量true
。由于属性本身总是返回false
,因此您可以知道调用的程序集是否PostSharp.Post.IsTransformed
已被转换。
一方面,您将在构建期间或之后在输出窗口中看到它(类似: message : PostSharp complete -- 0 errors, 0 warnings, served in 1073 ms
),另一方面,您可以使用 .net 反射器或类似工具(JetBrains dotPeek 是免费的)检查您的程序集,因此 postsharp 正在编织您的方面构建过程中的 IL 代码。
可能还有更多选项,例如检查 .pdb 文件。这足以满足您的需求吗?