WEB开发网
开发学院软件开发VC 更新MFC中的视图,跟踪.NET Framework中的事件 阅读

更新MFC中的视图,跟踪.NET Framework中的事件

 2006-07-19 11:28:40 来源:WEB开发网   
核心提示: 当然,编写运行时的代码本身,更新MFC中的视图,跟踪.NET Framework中的事件(5),反射不仅意味着可以查询系统中的对象,还意味着可以创建它们,我还写了一个叫 SpyTest 的程序来示范如何使用 这个类,(EventSpy 和 SpyTest 可以从本文开始的链接处下载),.N

当然,编写运行时的代码本身。反射不仅意味着可以查询系统中的对象,还意味着可以创建它们。.NET Framework 中有几种方法生成这些代码。System.CodeDom 提供了一 种高级的、语言无关的代码模型,你可以用它来创建诸如程序集、模块、类和方法等代码对象,然后使用象Microsoft.CSharp.CSharpCodeProvider 或者 Microsoft.VisualBasic.VBCodeProvider 这样的类在你最喜欢的语言中表达。另一种生成代码的方法是用你选择的语言将代码显式地写到一个文件或者一个 StringBuilder中,并使用 Process 类来调用适当的命令行编译器(如 C# 编译器 csc.exe)。实际上,友好的 Redmondtonians(译者注:指微软公司)已经保证“整个 Framework 都是这么做的”。例如,XmlSerializer 使用 csc.exe 动态编译所产生的为序列化(serializing)和 反序列化(deserializing)特殊类型 而优化的 C# 代码。

Code Document Object Model(CodeDOM)——代码文档对象模型被设计用 于代码生成器,为了在多语言中表达单一内部表示和随意编译性,该生成器需要处理抽象代码。运行象 csc.exe 这样的编译器需要性能作为代价,也许 仍然可以通过重复调用该代码来证明——你可以用同样的方法编译一个打算经常使用的正则表达式(RegEx)。但还是有另外的方发法来生成代码:你可以使用System.Reflection.Emit.ILGenerator 直接生成低级 的 MS 中间语言(MSIL)指令。很明显这个方法也不错,快速、有效,有时它是快速开发软件的杀手锏——比如写一个事件跟踪器。

为了示范具体做法,我写了一个类 EventSpy,它报告某些目标对象(被跟踪对象)触发的每一个事件。我还写了一个叫 SpyTest 的程序来示范如何使用 这个类。(EventSpy 和 SpyTest 可以从本文开始的链接处下载)。EventSpy 的使用方法很简单:只要实例化它并为 SpyEvent 事件 添加一个处理器,象这样:

上一页  1 2 3 4 5 6 7  下一页

Tags:更新 MFC 视图

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接