You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:31:11