• 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#代码转换工具
  • 相关阅读:
    C++开发系列-友元函数 友元类
    C++开发系列-C语言的malloc与C++的new分配空间
    C++开发系列-内联函数
    iOS开发系列-Foundation与CoreFoundation内存管理
    C开发系列-字符串
    C开发系列-数组
    列表 元组 字典
    神奇的print
    while 语句的逻辑
    <Web Crawler><Java><thread-safe queue>
  • 原文地址:https://www.cnblogs.com/dylike/p/10575990.html
Copyright © 2020-2023  润新知