在类库中,我正在尝试使用类库中的属性处理异常。有没有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();
}
最佳答案
简而言之,你不容易。您可以使用其他库(for example Spring.NET)中的AOP。唯一的区别是Spring.NET在运行时运行,而Postsharp在编译时运行。
您甚至可以使用Fody在编译时进行一些代码重写,例如PostSharp。
请注意,如果您只是想对异常进行一些记录并且不需要从堆栈中删除异常(您不想“吃掉”它或对其进行更改),则可以简单地添加一个FirstChanceException处理程序。请注意,这将大大降低所有速度,因为您将需要使用反射来检查属性的存在。而且,如果您想走栈,它会变得更慢! (更复杂)
关于c# - 使用属性处理类库中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36149577/