-
VB.NET面向对象的实现(十七)
对象的处理
晚的捆绑和反射
.NET框架支持反射的概念。反射是这样一种编写代码的能力,这些代码可以检查其它.NET代码并判断它们的组成。System.Reflection名空间支持反射。
反射允许我们编写代码来检查在方法、属性和时间的类,这些类应用于其它类中。我们可以使用反射来创建这些类的实例并调用这些方法。这个处理过程很象晚的捆绑,它们都是动态的。
实际上,VB.NET使用反射来执行晚的捆绑。VB.NET不是强迫我们编写代码来使用以发现和调用方法,它是在我们使用晚的捆绑编码技术的时候来发现和调用方法。
我们可以在VB6中使用typelib DLL(动态连接库)来执行一个反射受限的窗体。在DLL中的函数允许我们动态地发现在COM DLL中的类和方法,并且调用它们。
CType函数的使用
使用对象数据类型来传递对象引用并在我们需要处理它们的时候将它们转换为适当的类型是十分有用的。这一切可以通过使用Ctype函数来实现,它允许我们使用类型对象的变量来使用早的捆绑方法调用:
Module LateBind
Public Sub DoSomething(obj As Object)
CType(obj, TheClass).MyMethod()
End Sub
End Module
我们使用CType方法来暂时将变量转换为一个特殊的类型而不管TheClass的类型。Ctype函数是很有用的,特别是我们处理对象来执行多个界面的时候,因为我们可以引用一个对象变量并且它可以转换为适当的类型。举个例子,如果我们有一个类型的对象TheClass,这个对象执行MyInterface,那么我们可以这样来编写代码:
Dim obj As TheClass
obj = New TheClass
CType(obj, MyInterface).DoSomething()
不象VB6,我们可以在VB.NET中利用早的捆绑调用对象中的其它界面而不需要声明新的界面类型的变量。