【发布时间】:2016-11-25 06:15:55
【问题描述】:
我尝试通过自定义属性来处理错误,以便不要在任何地方使用 try catch。我已经找到了一个名为 PostSharp 的库,它做得很好,但是每个项目仅限于 10 个目标类。在 ASP.Net MVC 中有一个等价物,称为 HandleErrorAttribute,但我正在开发一个 Console。
欢迎任何想法、解决方案或示例。
谢谢。
【问题讨论】:
-
PostSharp 是我认为的最佳解决方案。你用的是付费版吗? PostSharp 使用更快的 MSIL 代码,然后使用反射,但我认为您不想自己编程 MSIL。这很复杂。此外,我认为您无法使用 customAttribute 处理此问题。因为 PostSharp 所做的是检查您的属性并插入 try-catch 结构。他们在你的代码中编译它。所以你没有看到它并认为 wow 这么容易这个属性。但在内部,如果你编译它会添加 try-catch 结构。也许表达式树允许类似的东西......
-
我没用付费版(我没钱)。我不知道 PostSharp insert try catch 在运行时,我会尝试这个解决方案。随时通知您。
-
是的。如果您编译编译器会生成 MSIL 代码,然后由即时编译器在运行时进行解释。 PostSharp 有很多方便的属性,可以在编译时添加样板代码,这样您就不需要每次都对其进行编程。比如 Try-Catch 或 INotifyPropertyChanged 等等。这就是它的工作原理;)如果你没有钱,也许 ExpressionTrees 可以做某事。类似的。但是你有很多事情要做;)
标签: c# error-handling custom-attributes