Electron调用C#类库dll


新建vue项目

PowerShell 全选
vue ui

安装插件 vue-cli-plugin-electron-builder

Electron调用C#类库dll

安装完成后:

Electron调用C#类库dll

C#类库代码

  • 定义的方法必须是:public async Task<object> MyMethod(dynamic input) 
  • 如果输入参数为对象,需要用动态对象接收 dynamic 不然,会报错。类型转换失败
 定义的方法必须是:public async Task MyMethod(dynamic input)
  • 首先,这里的返回值必须是Task,不能是Task或者Task或者其他的什么,否则会报错。
  • 其次,参数数量只能是1个。不能写多个参数
  • 再次,参数如果是简单类型,例如int,string是可以的。但是当参数类型是自定义的类型,那么方法参数必须写dynamic 类型。不能是其他类型。即使是写成object也不行。也会报错
C# 全选
using System;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace YESWEB.Electron.PrintServer
{
    public class Test
    {
        /// <summary>
        /// 测试,调用winform弹窗
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public async Task<object> ShowWarning(object message)
        {
            return await Task.Run(() =>
             {
                 MessageBox.Show(message.ToString(), "提醒", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                 return "调用成功";
             });

        }

        /// <summary>
        /// 测试1
        /// </summary>
        /// <param name="data">字符串数组</param>
        /// <returns>字符串</returns>
        public async Task<object> Test01(string[] data)
        {
            return await Task.Run(() => { return String.Join(",", data); });
        }
        public class P_Test3
        {
            public string Name { get; set; }
            public string Description { get; set; }
        }
        /// <summary>
        /// 测试2
        /// </summary>
        /// <param name="data">对象,必须是dynamic方式接收</param>
        /// <returns>字符串</returns>
        public async Task<object> Test02(dynamic input)
        {
            return await Task.Run(() => { return input.Name + ":" + input.Description; });
        }
        /// <summary>
        /// 测试3
        /// </summary>
        /// <param name="input">对象,必须是dynamic方式接收</param>
        /// <returns>对象</returns>
        public async Task<object> Test03(dynamic input)
        {
            return await Task.Run(() => { return input; });
        }
    }
}

调用dll

dll复制到项目目录 public/dll 目录中

Electron调用C#类库dll

导入:

JavaScript 全选
import edge from 'electron-edge-js'

调用方法

JavaScript 全选
testShowWarning () {
  const ShowWarning = edge.func({
	assemblyFile: 'public/dll/YESWEB.Electron.PrintServer.dll',
	typeName: "YESWEB.Electron.PrintServer.Test",
	methodName: "ShowWarning"
  })
  ShowWarning('Hello Electron', (error, value) => {
	console.log(error, value)
  })
}

 

参考:

vue+Electron开发桌面应用 - https://zhuanlan.zhihu.com/p/228691869

Electron edge.js配置-YES开发框架网 (yesdotnet.com)

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:Electron edge.js配置
下一篇:vue-cli4构建build时删除console和debugger
评论列表

发表评论

评论内容
昵称:
关联文章

Electron调用C#dll
YESWEB POS开发调试
微信授权连接URL生成
C# winform选择dll文件
Electron edge.js配置
EFCore官方扩展
C#去除DLL强命名
C# 静态获得 机密配置
winform项目提醒框扩展 MessageBoxHelper
LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]
winform使用webBrowser,C#直接调用js函数,并且支持array数组
.NET DLL反编译 JustDecompile
SourceGenerator的应用: .Net多进程开发 - Juxtapose
C#解析指定dll的app.config配置文件
YESWEB POS开发 Electron操作appdata配置信息
桌面显示文件
C#图片处理:ImageLibrary
【荐】开源Winform控件:花木兰控件
.NET中大型项目开发必备(9)--http请求调用(Post与Get)
C#安全帮助,提供MD5,AES加解密,SHA-1加密等

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码