DSAPI多功能组件编程应用-反射相关

时间:2023-03-08 23:56:05
DSAPI多功能组件编程应用-反射相关

[DSAPI.DLL下载地址]


      在.Net中,反射技术是一种入门困难,熟用快速的东西,对于没有接触过反射技术的程序员来说的确是头疼的,看一旦自己写过了,上手就非常简单了.在本节,将部分.NET反射技术进行了简化,使得能在开发软件时节省大量代码.

在DSAPI.DLL中,封装了以下反射相关的功能:

DSAPI.反射相关.反射Dll中所有窗体

DSAPI.反射相关.反射Dll中所有窗体名称

DSAPI.反射相关.反射Dll中所有指定开头文本的窗体

DSAPI.反射相关.反射Dll中所有指定开头文本的窗体名称

DSAPI.反射相关.反射Dll中指定窗体

DSAPI.反射相关.判断是否Dll中包含指定名称的成员

DSAPI.反射相关.序列化

DSAPI.反射相关.执行Dll中指定函数

示例代码:

Dim Frms As List(Of Form) = DSAPI.反射相关.反射Dll中所有窗体("c:\1.dll")
获取目标DLL(必须是.NET编写的DLL)中所有的窗体列表.

Dim Forms As List(Of String) = DSAPI.反射相关.反射Dll中所有窗体名称("c:\1.dll")
获取目标DLL中所有的窗体名称

Dim Frms As List(Of Form) = DSAPI.反射相关.反射Dll中所有指定开头文本的窗体("c:\1.dll", "Frm_")
获取目标DLL中所有指定字串开头的窗体

Dim Forms As List(Of String) = DSAPI.反射相关.反射Dll中所有指定开头文本的窗体名称("c:\1.dll", "Frm_")
获取目标DLL中所有指定字串开头的窗体名称列表

Dim F As Form=DSAPI.反射相关.反射Dll中指定窗体 ("c:\1.dll","Frm_Dlg")
创建并返回指定DLL中类名的Form

Dim Bl As Boolean = DSAPI.反射相关.判断是否Dll中包含指定名称的成员("c:\1.dll", "Frm_Dlg")
判断目标DLL中是否存在名称为"Frm_Dlg"的成员

Dim X As Integer = DSAPI.反射相关.执行Dll中指定函数("c:\1.dll", "Class1", "GetVa", "1")
执行并返回目标DLL中指定类名下的函数或方法,注意,要被执行的函数或方法必须带有参数,即使该参数不用.
如:

 Public Function GetVa(V As Integer) As Integer  '当使用上述代码远程执行时,必须指定一个参数,如V As Integer

        Return V + 100

    End Function

序列化

下面演示如何快速使用序列化功能

序列化,常用的做法就是将一个对象保存为数据流或者文件保存到硬盘上.以下演示如何使用DSAPI.DLL中序列化功能

假设有一个游戏数据类
</pre><pre name="code" class="vb"> Public Class GameData
Public GameName As String = "abc"
Public Level As Integer = 10
Public Gold As Integer = 1000
End Class

保存或读取游戏进度可以是这样:


  Private Sub Cd()
Dim Sz As New DSAPI.反射相关.序列化
Dim Gd As New GameData
'---保存到硬盘文件
Sz.序列化("c:\save.sav", Gd)
'---保存到数据流
Dim M As New IO.MemoryStream
Sz.序列化(M, Sz)
'---从文件反序列化到内存
Dim Obj As GameData = Sz.反序列化("c:\save.sav")
'---从数据流反序列化到内存
Dim Obj2 As GameData = Sz.反序列化(M)
End Sub