在类库中,我正在尝试处理类库中属性的异常。有没有办法没有AOP(PostSharp)?
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HandleError : Attribute
{
public void OnException(){
try {
}
catch (Exception) {
}}
}
我想像这样装饰属性。
[HandleError]
public void SampleMethod()
{
throw new Exception();
}
简单地说,你不能轻易。您可以使用其他库中的 AOP(例如 Spring.NET)。唯一的区别是 Spring.NET 运行时工作,而Postsharp在编译时工作。
你甚至可以使用Fody在编译时进行一些代码重写,比如PostSharp。
请注意,如果您只想对异常进行一些日志记录,并且不需要从堆栈中删除异常(您不想"吃掉"它或更改它),那么您可以简单地添加一个 FirstChanceException 处理程序。请注意,这会减慢所有内容的速度,因为您需要使用反射来检查属性是否存在。如果你想走堆栈,它会变得更慢!(而且要复杂得多)