在Overwolf中用TypeScript调用C# DLL函数遇undefined问题求助
问题排查与修复方案
1. 命名空间拼写不一致
你的C#代码中命名空间是MyNameSpace(Name与Space分开拼写),但manifest.json里的class字段写的是MyNamespace.MyClass(合并为Namespace),拼写错误会导致Overwolf无法正确定位目标类。修正后的配置应为:
"data": { "extra-objects": { "myPlugin": { "file": "plugins/ClassLibrary1.dll", "class": "MyNameSpace.MyClass" } } }
2. 静态方法无法通过实例访问
Overwolf的getExtraObject会创建C#类的实例对象,而你定义的isActive是静态方法,无法通过类实例调用。需要将方法修改为实例方法:
namespace MyNameSpace { public class MyClass { // 确保有无参构造函数(默认自动生成,除非自定义了带参构造) public MyClass() {} // 改为实例方法 public bool isActive() { // 你的业务逻辑代码 return true; // 示例返回值 } } }
3. 异步调用未处理回调逻辑
Overwolf调用C#插件方法是异步执行的,直接调用result.object.isActive()会返回undefined,因为方法不会同步返回结果。必须传入回调函数获取执行结果:
button.addEventListener('click', () => { overwolf.extensions.current.getExtraObject("myPlugin", (result) => { if (result.success) { // 通过回调获取方法返回值 result.object.isActive((methodResult) => { console.log(methodResult.success); // 方法是否调用成功 console.log(methodResult.data); // 方法返回的bool结果 }); } }); });
额外验证项
- 确保C#类库是基于
.NET Framework 4.7.2编译的(Overwolf插件要求的框架版本) - 替换
plugins文件夹中的旧DLL文件后,重启Overwolf客户端并重新加载应用
内容的提问来源于stack exchange,提问作者yolo
相关产品推荐
相关产品推荐

