我想创建一个属性HandleError
,我会把它放在这样的类上:
[HandleError]
public class Foo
{
public void Do(){}
...
public void Don(){}
}
它会将所有方法包装在try catch中,所以我认为它应该是这样的:
public class HandleErrorAttribute : Attribute
{
public void Execute()
{
try
{
method.Execute();
}
catch(Exception ex)
{
//log
}
}
}
这可能吗?
答案 0 :(得分:3)
你正在寻找类似PostSharp的东西,这值得实施。但是,实施远远超出了这个问题的范围。看看这个link,你会发现它正在做你想要的。
因此,请下载PostSharp,开始使用它,如果您对此有更多疑问,那么我们就能帮到您。但是,他们的文档非常好,实施起来很好。
[Serializable]
public class MyExceptionHandling : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
// here you would perform the logging
}
}
然后在您的方法上,您将使用新属性标记它:
public class Foo
{
[MyExceptionHandling]
public void Do(){}
[MyExceptionHandling]
public void Don(){}
}