是否可以创建自定义功能来捕获由自定义属性设置的方法中发生的异常?
我打算做这样的事情:
[Logging(FeatureEnum.SomeFeature, IntentEnum.SomeIntent, "some comment")]
public void SomeMethodThatDoesATask()
{
try
{
var doSomeAction = new LazyProcess();
doSomeAction.WhoDunnit();
}
catch(Exception ex)
{
StaticMethodThatDoesLogging.CatchError(ex);
}
}
问题是: 如何捕获放置此属性的方法名称以及引发的事件?它可以捕获异常或仅自动记录此方法已被调用。
最佳答案
这不容易实现。例如TypeMock使用 .NET 框架探查器 API 来监视应用程序的执行。它允许您注册不同的事件,并在调用方法、发生异常时收到通知……但这不是一件容易的事。
另一方面,您可以使用 AOP,但它需要您修改代码,以便调用者使用一些生成的代理而不是实际类。 Spring.NET它有一些不错的功能。
因此,如果不使用 .NET Framework Profiler API 或不编写一些自定义代码来使用反射从给定类中读取这些属性,则基本上无法实现此目的。属性只是类元数据,如果没有任何可以理解它们的东西,它们什么都不做。
关于c# - 使用 C# 自定义属性进行异常和审计跟踪记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4516769/