C# 实现插件与主程序之间互相通信

本文介绍了如何在C#中实现主程序与扩展之间的通信。通过创建SDK,定义IExtension接口,主程序可以读取并传递消息给扩展,而扩展通过继承IExtension来接收和发送消息,实现双方的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C# 实现扩展与主程序之间的通信


前言

之前我一直在写扩展时总是遇到和主程序通信的问题,最近我终于解决了。

实现

主程序

读取所有扩展并将消息传输类传输给扩展

        string[] extensionPaths = Directory.GetFiles(ExtensionPath, "*.dll");//获得所有dll
        foreach (string extensionPath in extensionPaths)
        {
            Assembly extensionAssembly = Assembly.LoadFrom(extensionPath);
            Type[] extensionCalsses = extensionAssembly.GetExportedTypes();
            foreach (Type extensionCalss in extensionCalsses)
            {
                if(typeof(IExtension).IsAssignableFrom(extensionCalss) == true)
                {
                    object extensionObject = Activator.CreateInstance(extensionCalss);
                    MethodInfo initializationMethod = extensionCalss.GetMethod("Initialization");
                    Message message = new Message();
                    message.Send += Receiv
非常好用的C#.net的TCP控件,this.vmTcpIpServer1.Collapse = false; this.vmTcpIpServer1.EnableLog = false; this.vmTcpIpServer1.IdleTime = -1; this.vmTcpIpServer1.LocalUsingIpAddr = "127.0.0.1"; this.vmTcpIpServer1.Location = new System.Drawing.Point(9, 17); this.vmTcpIpServer1.LogFilePath = "D:\\AppLog"; this.vmTcpIpServer1.MaxLogShownLines = 30; this.vmTcpIpServer1.Name = "vmTcpIpServer1"; this.vmTcpIpServer1.PackageHeader = UNYC.TcpIp.PackageHeader.None; this.vmTcpIpServer1.PackageTailer = UNYC.TcpIp.PackageTailer.None; this.vmTcpIpServer1.PortNum = 30000; this.vmTcpIpServer1.SaveToLogFile = false; this.vmTcpIpServer1.ShowTransContents = false; this.vmTcpIpServer1.Size = new System.Drawing.Size(266, 405); this.vmTcpIpServer1.TabIndex = 0; // // vmTcpIpClient1 // this.vmTcpIpClient1.AutoRecover = false; this.vmTcpIpClient1.Collapse = false; this.vmTcpIpClient1.ConnRetries = -1; this.vmTcpIpClient1.EnableLog = false; this.vmTcpIpClient1.IdleTime = -1; this.vmTcpIpClient1.IpAddr = "192.168.100.231"; this.vmTcpIpClient1.Location = new System.Drawing.Point(311, 17); this.vmTcpIpClient1.LogFilePath = "D:\\AppLog"; this.vmTcpIpClient1.MaxLogShownLines = 100; this.vmTcpIpClient1.Name = "vmTcpIpClient1"; this.vmTcpIpClient1.PackageHeader = UNYC.TcpIp.PackageHeader.None; this.vmTcpIpClient1.PackageTailer = UNYC.TcpIp.PackageTailer.None; this.vmTcpIpClient1.PingInterval = 500; this.vmTcpIpClient1.PortNum = 912815; this.vmTcpIpClient1.SaveToLogFile = false; this.vmTcpIpClient1.ShowTransContents = false; this.vmTcpIpClient1.Size = new System.Drawing.Size(266, 405);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值