Ska*_*osh 20 c# asp.net aop exception-handling
发生异常时,如何获取所有本地和会话变量的转储?我正在考虑编写某种基于反射的函数,该函数将询问调用函数并创建变量和值的转储.
我可以使用现有的库吗?
UPDATE
在与同事交谈后,我被指向AOP或面向方面编程.这就是我的理解......使用AOP,可以简单地用某些属性修饰方法和类.然后,AOP框架在这些类和方法中或周围注入代码.有两种不同的框架,一种是注入代码然后编译程序集,第二种只是使用反射和陷阱你已经装饰的调用,并在运行时包装方法周围的代码.
我希望所有这些都有道理.我将对此进行更多研究并发布我的方法.
多谢你们 ...
Tim*_*ter 14
我不确定这是不是你要找的东西.但是,如果您处于catch-block中,则可以通过以下方式获取此类的所有字段和属性:
try
{
double d = 1 / 0;
}
catch (Exception ex)
{
var trace = new System.Diagnostics.StackTrace();
var frame = trace.GetFrame(1);
var methodName = frame.GetMethod().Name;
var properties = this.GetType().GetProperties();
var fields = this.GetType().GetFields(); // public fields
// for example:
foreach (var prop in properties)
{
var value = prop.GetValue(this, null);
}
foreach (var field in fields)
{
var value = field.GetValue(this);
}
foreach (string key in Session)
{
var value = Session[key];
}
}
Run Code Online (Sandbox Code Playgroud)
我已经展示了如何获取方法名称,只是出于完整性而发生异常.
使用BindingFlags,您可以指定约束,例如,您只需要此类的属性而不是继承的属性:
在.NET Reflection中使用GetProperties()和BindingFlags.DeclaredOnly
当然上面的内容应该只给你一个起点如何手动完成,你应该将所有内容封装到类中.我自己从未使用它,所以它没有经过测试.
| 归档时间: |
|
| 查看次数: |
10637 次 |
| 最近记录: |