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




自动备注:本博所有文章均为博主本人编写,未经许可谢绝任何形式的转载。
博主使用VB.NET语言,如您使用C#语言,可下载VB.NET/C#代码转换工具
原文地址:https://www.cnblogs.com/dylike/p/10575990.html