在类库中,我尝试使用类库中的属性处理异常。有没有办法没有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();
}
答案 0 :(得分:2)
简单地说,你不能轻易。您可以使用其他库中的AOP(for example Spring.NET)。唯一的区别是Spring.NET在运行时工作,而Postsharp在编译时工作。
你甚至可以使用Fody在编译时进行一些代码重写,比如PostSharp。
请注意,如果您只是想对异常进行一些日志记录而不需要从堆栈中删除异常(您不想“吃掉”或更改它),那么您只需添加一个FirstChanceException处理程序。请注意,这会减慢所有内容,因为您需要使用反射来检查属性的存在。如果你想走栈,它会变得更慢! (而且更复杂)