夜色灵魂 2024-01-18 08:56 采纳率: 75%
浏览 14
已结题

#关于vb.net动态调用代码的问题

#关于vb.net动态调用代码的问题
写了一个桌面程序由于需求在变化,导致每次更改时都要发布新的应用程序,
现在想把执行代码存储到数据库中,在桌面程序中通过不同的名称调用对应的代码并执行。

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-21 10:00
    关注

    引自免费微信小程序:皆我百晓生

    解决这个问题的一种方法是使用VB.NET的反射机制来动态调用代码。下面是一种实现方式:

    1. 将代码存储到数据库中:将要执行的代码以文本形式存储在数据库中的一个字段中,例如一个名为"Code"的字段。

    2. 在桌面程序中获取数据库中的代码:使用ADO.NET或任何适用的数据库访问方法,从数据库中获取对应名称的代码。

    3. 使用反射机制动态调用代码:在桌面程序中使用反射机制将获取到的代码动态加载并执行。

      • 创建一个新的AppDomain实例,可以用于隔离和加载动态代码。
      • 使用CreateInstanceFromAndUnwrap方法,从数据库中获取的代码字符串会被动态加载并创建一个对象实例。
      • 通过反射机制调用对象实例的方法或访问其属性。

    下面是一个示例代码:

    Imports System
    Imports System.Reflection
    
    Public Class CodeExecutor
        Inherits MarshalByRefObject ' 这样允许在不同的AppDomain中运行代码
    
        Public Sub Execute()
            ' 在这里编写要执行的代码
        End Sub
    End Class
    
    Public Class Program
        Public Shared Sub Main()
            ' 从数据库中获取待执行的代码字符串
            Dim code As String = GetCodeFromDatabase()
    
            ' 创建新的AppDomain
            Dim domain As AppDomain = AppDomain.CreateDomain("DynamicCodeDomain")
    
            ' 创建CodeExecutor实例
            Dim executor As CodeExecutor = CType(domain.CreateInstanceFromAndUnwrap(
                Assembly.GetExecutingAssembly().Location,
                GetType(CodeExecutor).FullName), CodeExecutor)
    
            ' 调用Execute方法执行代码
            executor.Execute()
    
            ' 卸载AppDomain
            AppDomain.Unload(domain)
        End Sub
    
        Public Shared Function GetCodeFromDatabase() As String
            ' 从数据库中获取代码字符串的逻辑
        End Function
    End Class
    

    这是一个基本的框架,你需要根据实际情况进行适当的调整。从数据库中获取代码和执行动态代码的具体逻辑,以及其他细节,需要根据你的具体需求进行实现。

    希望这能帮到你解决问题!如果你还有其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月25日
  • 赞助了问题酬金15元 1月21日
  • 修改了问题 1月18日
  • 创建了问题 1月18日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价