C#利用反射在debug状态下获取调用代码所在文件及行信息

 使用StackTrace在Debug模式下获取调用代码所在文件及行信息.net4.0环境

        public static T RunApi<T>(this object o, Func<T> run)
        {
            //StackTrace(true)参数非常重要,必须为true
           StackFrame stackFrame =new StackTrace(true).GetFrame(1);
            string beforeCallFileName = stackFrame.GetFileName();
            string beforeCall= stackFrame.GetMethod().ToString();
           
            int beforeCallFileLine = stackFrame.GetFileLineNumber();

            T result = run();
     

            Help.DebugWrite(null, "[{0}] result[{1}] {2} {3} {4} ", Help.LongToString(Marshal.GetLastWin32Error(), "err"), result,beforeCall,beforeCallFileName,beforeCallFileLine);
            return result;

        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者: (美)Donis Marshall [作译者介绍] 译者: 施平安 王净 蔡兴泉 丛书名: 微软技术丛书 出版社:清华大学出版社 目录回到顶部↑ 第i部分 核心语言. 第1章 visual c#编程简介 3 1.1 visual c# 2008编程示例 4 1.1.1 c#示例程序 4 1.1.2 linq示例程序 6 1.2 visual c# 2008程序的公共要素 8 1.2.1 命名空间 8 1.2.2 main入口点 12 1.2.3 局部变量 13 1.2.4 可空类型 13 1.2.5 表达式 14 1.2.6 选择语句 15 1.2.7 迭代语句 17 1.3 c#核心语言特征 20 1.3.1 符号和标记 20 1.3.2 标识符 36 1.3.3 关键字 36 1.3.4 基元 39 1.4 类型预览 40 第2章 类型 41 .2.1 类 41 2.1.1 类的成员 43 2.1.2 成员函数 48 2.2 结构 67 2.3 枚举 68 2.4 等值与标识 70 2.5 继承预览 71 第3章 继承 72 3.1 继承示例 73 3.2 system.object 76 3.2.1 object.equals方法 77 3.2.2 object.gethashcode方法 78 3.2.3 object.gettype方法 78 3.2.4 object.tostring方法 79 3.2.5 object.memberwiseclone方法 79 3.2.6 object.referenceequals方法 80 3.3 employee类 81 3.4 实现继承 82 3.5 重写继承的行为 83 3.5.1 virtual和override关键字 84 3.5.2 重载与重写 84 3.5.3 重写事件 85 3.5.4 扩展方法 86 3.6 new修饰符 87 3.7 抽象类 90 3.8 密封类 92 3.9 构造函数和析构函数 92 3.10 接口 95 3.10.1 实现接口 97 3.10.2 显式接口成员实现 98 3.10.3 接口的再实现 101 3.11 多态性 103 3.11.1 接口多态性 106 3.11.2 new修饰符和多态性 107 3.12 强制类型转换 108 3.13 属性继承 112 3.14 visual studio 2008预览 113 第ii部分 核心技术 第4章 visual studio 2008简介 117 4.1 迁移到visual studio 2008 117 4.2 集成开发环境 119 4.2.1 起始页 119 4.2.2 创建项目 120 4.2.3 多目标 120 4.2.4 解决方案资源管理器 121 4.2.5 项目类型 123 4.2.6 添加引用 123 4.2.7 visual studio中的窗口管理 124 4.2.8 自动恢复 125 4.3 类层次结构 125 4.3.1 “类视图”窗口 126 4.3.2 对象浏览器 127 4.3.3 类关系图 127 4.3.4 “错误列表”窗口 136 4.4 代码编辑器 137 4.4.1 intellisense 137 4.4.2 外侧代码 138 4.4.3 字体和颜色格式化 138 4.4.4 源代码格式设置 139 4.4.5 修改跟踪 139 4.5 代码段 140 4.5.1 插入代码段 140 4.5.2 默认的代码段 142 4.5.3 代码段管理器 143 4.5.4 创建代码段 144 4.5.5 复制和粘贴 149 4.6 重构 149 4.7 生成和部署 153 4.7.1 msbuild 154 4.7.2 clickonce部署 158 4.8 数组和集合预览 163 第5章 数组和集合 165 5.1 数组 167 5.1.1 数组元素 168 5.1.2 多维数组 169 5.1.3 交错数组 171 5.1.4 system.array 172 5.1.5 system.array属性 179 5.1.6 params关键字 185 5.1.7 数组转换 187 5.2 集合 188 5.2.1 arraylist集合 189 5.2.2 bitarray集合 192 5.2.3 hashtable集合 194 5.2.4 queue集合 198 5.2.5 sortedlist 199 5.2.6 stack集合 202 5.2.7 专用集合 203 5.3 linq预览 204 第6章 linq简介 205 6.1 c#扩展 206 6.1.1 类型推断 206 6.1.2 对象初始值设定项 207 6.1.3 匿名类型 207 6.1.4 扩展方法 208 6.1.5 lambda表达式 208 6.1.6 表达式目录树 209 6.2 linq基础 210 6.2.1 核心要素 210 6.2.2 转换运算符 213 6.2.3 linq查询表达式语法 214 6.2.4 linq在哪里 215 6.3 linq to objects 216 6.4 linq运算符 219 6.4.1 聚合运算符 219 6.4.2 连接运算符 220 6.4.3 数据类型转换运算符 220 6.4.4 元素运算符 222 6.4.5 等于运算符 223 6.4.6 筛选运算符 223 6.4.7 生成运算符 223 6.4.8 分组运算符 224 6.4.9 联接运算符 224 6.4.10 分区运算符 225 6.4.11 量词运算符 226 6.4.12 集合运算符 226 6.4.13 排序运算符 227 6.5 泛型预览 228 第7章 泛型 229 7.1 泛型类型 231 7.1.1 类型形参 232 7.1.2 类型实参 232 7.1.3 构造类型 235 7.1.4 重载方法 236 7.2 泛型方法 237 泛型类型的this引用 238 7.3 约束 238 7.3.1 派生约束 239 7.3.2 接口约束 243 7.3.3 值类型约束 244 7.3.4 引用类型约束 245 7.3.5 默认的构造函数约束 246 7.4 强制类型转换 246 7.5 继承 247 7.5.1 重写泛型方法 248 7.5.2 嵌套类型 249 7.6 静态成员 250 7.6.1 运算符函数 251 7.6.2 序列化 252 7.6.3 泛型本质 254 7.6.4 泛型集合 255 7.7 枚举器预览 256 第8章 枚举器 257 8.1 可枚举的对象 258 8.1.1 枚举器 258 8.1.2 枚举器实例 260 8.1.3 枚举器实例(版本化集合) 261 8.1.4 ienumerator问题 263 8.2 泛型枚举器 263 8.2.1 ienumerable[t]接口 264 8.2.2 ienumerator[t]接口 264 8.2.3 泛型枚举器实例(版本化集合) 265 8.3 迭代器 267 8.4 运算符重载预览 274 第iii部分 c#语言详解 第9章 运算符重载 277 9.1 数学运算符和逻辑运算符 278 9.1.1 实现 279 9.1.2 自增和自减运算符 281 9.1.3 左移和右移运算符.. 282 9.1.4 true和false运算符 283 9.1.5 成对运算符 284 9.2 转换运算符 288 9.3 实例 291 9.4 运算符重载的本质 294 9.5 委托和事件预览 296 第10章 委托和事件 297 10.1 委托 297 10.1.1 定义委托 298 10.1.2 创建委托 299 10.1.3 逆变和协变 300 10.1.4 激活委托 300 10.1.5 委托数组 301 10.1.6 system.multicastdelegate类 302 10.1.7 调用列表 303 10.1.8 泛型和委托 306 10.1.9 异步调用 307 10.1.10 异步委托图 310 10.1.11 异常 311 10.2 匿名方法 312 10.2.1 外部变量 314 10.2.2 泛型匿名方法 316 10.2.3 匿名方法的局限性 316 10.3 事件 317 10.3.1 发布事件 317 10.3.2 订阅者 318 10.3.3 引发事件 318 10.4 linq编程预览 320 第11章 linq编程 321 11.1 linq to xml 321 11.1.1 xml架构 322 11.1.2 验证 322 11.1.3 导航 323 11.1.4 显式的强制类型转换 327 11.1.5 xml修改 328 11.1.6 xml查询表达式 330 11.2 linq to sql 331 11.2.1 实体类 331 11.2.2 linq to sql查询表达式 333 11.2.3 linq to dataset 334 11.2.4 关联 335 11.2.5 linq to sql更新 337 11.3 异常处理预览 339 第12章 异常处理 340 12.1 异常示例 340 12.2 标准异常模型 341 12.3 结构化异常处理 342 12.3.1 try语句 342 12.3.2 catch语句 343 12.3.3 异常的传播 344 12.3.4 finally语句 346 12.3.5 异常信息表 346 12.3.6 嵌套的try块 347 12.4 system.exception 348 12.4.1 system.exception函数 349 12.4.2 system.exception属性 350 12.4.3 应用程序异常 351 12.4.4 异常转换 353 12.4.5 com互操作性异常 353 12.5 远程异常 357 12.6 未处理的异常 358 12.6.1 application.threadexception 360 12.6.2 appdomain.unhandledexception 360 12.7 在visual studio中管理异常 361 12.7.1 异常助手 362 12.7.2 “异常”对话框 362 12.8 元数据和反射预览 363 第iv部分 调试 第13章 元数据和反射 367 13.1 元数据 367 13.1.1 元数据标记 369 13.1.2 元数据堆 369 13.1.3 流 370 13.1.4 元数据验证 370 13.1.5 ildasm 371 13.2 反射 375 13.2.1 获得type对象 376 13.2.2 加载程序集 378 13.2.3 浏览类型信息 380 13.2.4 动态调用 383 13.2.5 类型的创建 387 13.2.6 晚期绑定委托 389 13.2.7 函数调用性能 391 13.3 反射和泛型 391 13.3.1 isgeneric和isgenerictypedefinition 392 13.3.2 typeof 393 13.3.3 gettype 393 13.3.4 getgenerictypedefinition 394 13.3.5 getgenericarguments 394 13.3.6 创建泛型类型 395 13.3.7 反射的安全性 396 13.3.8 属性 397 13.3.9 程序员定义的自定义属性 399 13.3.10 属性和反射 403 13.4 msil预览 405 第14章 msil编程 406 14.1 “hello world”应用程序 408 14.2 计算堆栈 409 14.3 msil详解 410 14.4 复杂任务 419 14.5 分支 424 14.6 数组 428 14.7 算术指令 430 14.8 转换运算 430 14.9 异常处理 431 14.10 其他操作 432 14.11 进程执行 432 14.12 用visual studio 2008进行调试预览 436 第15章 用visual studio 2008进行调试 437 15.1 调试概述 438 15.1.1 调试windows窗体项目 438 15.1.2 附加到运行进程 438 15.1.3 调试控制台应用程序项目 440 15.1.4 调试类库项目 440 15.2 调试配置 441 15.2.1 debug和release配置 441 15.2.2 配置管理器 441 15.3 调试设置 442 15.3.1 visual studio环境调试设置 442 15.3.2 解决方案的调试设置 447 15.3.3 项目的调试设置 448 15.4 断点 449 15.4.1 函数断点 449 15.4.2 “断点”窗口 450 15.4.3 跟踪点 454 15.5 代码逐步调试 456 15.5.1 逐步调试命令 456 15.5.2 “设置下一条语句”实例 456 15.6 “调试”工具栏 457 15.7 数据提示 458 15.8 调试窗口 460 15.8.1 “断点”窗口 460 15.8.2 “输出”窗口 460 15.8.3 “监视”窗口和其他变量窗口 461 15.8.4 自动窗口 463 15.8.5 “局部变量”窗口 463 15.8.6 “即时”窗口 463 15.8.7 “调用堆栈”窗口 466 15.8.8 “线程”窗口 467 15.8.9 “模块”窗口 468 15.8.10 “进程”窗口 468 15.8.11 “内存”窗口 469 15.8.12 “反汇编”窗口 469 15.8.13 “寄存器”窗口 470 15.9 跟踪 471 15.9.1 跟踪实例 478 15.9.2 配置文件 481 15.9.3 使用配置文件进行跟踪的示例 482 15.10 debuggerdisplayattribute 484 15.11 debuggerbrowsableattribute 486 15.12 debuggertypeproxyattribute 488 15.13 转储文件 488 15.14 高级调试预览 490 第16章 高级调试 491 16.1 debuggableattribute属性 492 16.2 调试器 493 16.3 托管调试器(mdbg) 493 16.3.1 mdbg实例 494 16.3.2 mdbg命令 497 16.4 windbg 499 16.5 son of strike(sos) 505 16.5.1 sos实例——第1部分 506 16.5.2 sos实例——第2部分 508 16.6 转储文件 510 16.7 内存管理 512 16.7.1 对象图 513 16.7.2 代 515 16.7.3 终结进程 519 16.7.4 可靠性和性能监视器 519 16.8 线程 520 16.9 异常 526 16.10 符号 527 16.10.1 symsrv符号服务器 528 16.10.2 应用程序符号 529 16.11 内存管理预览 529 第v部分 高级特性 第17章 内存管理 533 17.1 非托管资源 534 17.1.1 垃圾回收概述 535 17.1.2 gc风格 538 17.2 终结器 539 17.3 idisposable.dispose 551 17.3.1 disposable模式 554 17.3.2 disposable模式的考虑因素 555 17.4 弱引用 560 17.4.1 弱引用内部机理 562 17.4.2 weakreference类 563 17.4.3 可靠的代码 563 17.4.4 管理非托管资源 566 17.5 gc类 569 17.6 不安全的代码预览 569 第18章 不安全的代码 570 18.1 unsafe关键字 572 18.1.1 指针 573 18.1.2 指针参数和指针返回值 575 18.1.3 p/invoke 578 18.2 小结 590 索引... 591

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值