Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在React组件类中绑定和调用c#obejct方法_C#_Reactjs_Cefsharp - Fatal编程技术网

如何在React组件类中绑定和调用c#obejct方法

如何在React组件类中绑定和调用c#obejct方法,c#,reactjs,cefsharp,C#,Reactjs,Cefsharp,我有一个Cefsharp容器,在其中加载本地节点服务器上托管的react应用程序。我在.net项目中注册了一个c#对象,如下所示:- browser.JavascriptObjectRepository.Register("bound", new Client(), isAsync: true, options: BindingOptions.DefaultBinder); 现在,在我的一个react组件类中,我想引用该C#对象的一个方法。我正在做的是,我正在尝试使用 componentW

我有一个Cefsharp容器,在其中加载本地节点服务器上托管的react应用程序。我在.net项目中注册了一个c#对象,如下所示:-


browser.JavascriptObjectRepository.Register("bound", new Client(), isAsync: true, options: BindingOptions.DefaultBinder);

现在,在我的一个react组件类中,我想引用该C#对象的一个方法。我正在做的是,我正在尝试使用

componentWillMount() {
    this.invoke();
  }

  async invoke() {
    const message = await window.bound.message();
    this.setState({selectedItem: message});
  }
这是我的C#对象:-


但这是行不通的。我得到“绑定未定义错误”。我已经阅读了几十篇文章,但大多数都是在他们的HTML文件中引用CefSharp库,这是他们.Net项目的一部分。但在我的例子中,我没有任何HTML文件,也没有任何CefSharp库。“绑定”是否与javascript中的窗口对象绑定?请建议。

请阅读如果您正在开发一个新的应用程序,那么当注册一个对象时,您应该使用
isAsync:true
,因为非异步版本不再开发。@amaitland我已经阅读了这篇文章。这篇文章建议我需要等待CefSharp.BindObjectAsync()绑定后,将c#对象注册为isAsync:true。但我的节点项目中没有引用。我是否需要指出,因为它抛出了相同的错误。请编辑您的问题,以显示您有什么triedI破解了这个问题。我们必须使用ExecuteJavaScriptAsync api从C代码本身执行CefSharp.BindObjectAsync(“boundAsync”),然后访问React应用程序中的公开对象。感谢@amaitland花费您的时间和精力。如果您正在开发一个新的应用程序,那么当注册一个对象时,您应该使用
isAsync:true
,因为不再开发非异步版本。@amaitland我已经阅读了这篇文章。这篇文章建议我需要等待CefSharp.BindObjectAsync()绑定后,将c#对象注册为isAsync:true。但我的节点项目中没有引用。我是否需要指出,因为它抛出了相同的错误。请编辑您的问题,以显示您有什么triedI破解了这个问题。我们必须使用ExecuteJavaScriptAsync api从C代码本身执行CefSharp.BindObjectAsync(“boundAsync”),然后访问React应用程序中的公开对象。感谢@amaitland给予您的时间和关注。
public class Client
    {
        public string Id { get; set; }
        public string Name { get; set; }

        public string Message()
        {
            return "ClientABCD";
        }
    }