Electron调用C#类库dll
新建vue项目
PowerShell 全选
vue ui
安装插件 vue-cli-plugin-electron-builder
安装完成后:
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 目录中
导入:
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开发框架网发布内容,转载请附上原文出处连接
post 张国生