当前位置: 首页 > news >正文

cefsharp 93.1.140 如何在js中暴露c#类

从cefsharp79版本开始,旧的RegisterJsObject方法被删除了。
也就是说想使用79以后的版本,就必须更新js暴露c#对象的方法了。由于79之前的注册方法是不需要在js中进行注册的,在93版本上如何在不改动前端页面的基础上实现内核升级咧,话不多说上代码:

CefSharpSettings.WcfEnabled = true;
CWBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;  
CWBrowser.JavascriptObjectRepository.NameConverter = new MyNameConverter();     
CWBrowser.JavascriptObjectRepository.Register("cefCardReader", new CefCardReader(), isAsync: false);

这样就能完美实现C#内注册的向前兼容,不用改动任务前端调用逻辑。
这里面有一个注意的地方,就是默认注册时会把方法的首字母转换成小写,我们之前的项目里面有些方法做了小写转换,有些去掉了小写转换,为了兼容需要自定义一个NameConverter,去实现自定义大小写转换,这边我自定义了一个MyNameConverter类,代码内容如下:

public class MyNameConverter : IJavascriptNameConverter{public string ConvertReturnedObjectPropertyAndFieldToNameJavascript(MemberInfo memberInfo){return ConvertToJavascript(memberInfo);}public string ConvertToJavascript(MemberInfo memberInfo){if ("CefCardReader".Equals(memberInfo.DeclaringType.Name)){string name = memberInfo.Name;if (name.Length == 1){return name;}if (name.All(char.IsUpper)){return name;}var firstHalf = name.Substring(0, 1);var remainingHalf = name.Substring(1);return firstHalf.ToLowerInvariant() + remainingHalf;}return memberInfo.Name;}}

将需要转换的方法进行转换,不需要进行转换的不进行转换。
最后还有一个注意事项,就是注册方法要放在ChromiumWebBrowser实例添加到控件之前,否则会注册不成功。

http://www.lryc.cn/news/228710.html

相关文章:

  • 同一台Linux同时安装MYSQL5.7和MYSQL8(第一篇)
  • 【CSS】解决上层盒子遮挡下层图片点击事件的三种方法
  • 力扣每日一题 ---- 2906. 构造乘积矩阵
  • Tomcat学习
  • Linux系统上搭建高可用Kafka集群(使用自带的zookeeper)
  • WebSocket在node端和客户端的使用
  • ENVI IDL:如何将txt文本文件转化为GeoTIFF文件?
  • 北邮22级信通院数电:Verilog-FPGA(9)第九周实验(2)实现下降沿触发的JK触发器(带异步复位和置位功能)
  • pyqt5UI同步加载
  • CentOS 7 安装 Redis 5 (单机 6379)
  • sqlplus set参数大区
  • 从0到0.01入门React | 006.精选 React 面试题
  • GeoTools实战指南: 处理矢量文件中多多边形的MultiPolygon空洞问题
  • javaSE学习笔记(五)集合框架-Collection,List,Set,Map,HashMap,Hashtable,ConcurrentHashMap
  • web3 React dapp项目通过事件从区块链中拿到 已取消 已完成 和所有的订单数据 并存入redux中
  • 25、Flink 的table api与sql之函数(自定义函数示例)
  • MybatisPlus —注解汇总
  • flink对状态ttl进行单元测试
  • Mac电脑安装打印机驱动
  • C语言 每日一题 牛客网 11.13 Day17
  • python读取npy和dat文件信息
  • 【Git】第四篇:基本操作(理解工作区、暂存区、版本库)
  • Word转PDF简单示例,分别在windows和centos中完成转换
  • 推荐收藏!大模型算法工程师面试题来了(附答案)
  • 线程与进程
  • SparkSQL之Analyzed LogicalPlan生成过程
  • Vue的状态管理有哪些?
  • 1000道精心打磨的计算机考研题,408小伙伴不可错过
  • Flink SQL 表值聚合函数(Table Aggregate Function)详解
  • pgsql_全文检索_使用空间换时间的方法支持中文搜索