0

这是我为Account 类提供的参考。我想从 Angular 的 .ts 调用 c# 方法,并且我必须将数据发送到方法。

            mainLayout.Children.Add((UIElement)webView.GetComponent());
            webView.Browser.ScriptContextCreated += delegate (object sender, ScriptContextEventArgs e)
            {
                JSValue value = webView.Browser.ExecuteJavaScriptAndReturnValue("window");
                **value.AsObject().SetProperty("Account", new Account());**
                webView.Browser.ExecuteJavaScript("window.Account.Save('FirstName', 'LastName');");
            };
            webView.Browser.LoadURL("http://localhost:4200/");```

Below is class of which method i am calling.

```[ComVisibleAttribute(true)]
    public class Account
    {
        public void Save(String firstName, String lastName)
        {
            Console.Out.WriteLine("firstName = " + firstName);
            Console.Out.WriteLine("lastName = " + lastName);
        }
    }```
here is what i have tried.
window.Account.Save('FirstName', 'LastName');
but no luck so far...
4

1 回答 1

1

使用 DotNetBrowser 2.0

C#端

IBrowser browser;
IEngine engine;

engine = EngineFactory.Create(new EngineOptions.Builder
{
    LicenseKey = "your_license",
    RenderingMode = RenderingMode.HardwareAccelerated,
}
.Build());

browser = engine.CreateBrowser();
browser.InjectJsHandler = new Handler<InjectJsParameters>(p =>
{
    IJsObject window = p.Frame.ExecuteJavaScript<IJsObject>("window").Result;
    window.Properties["callback"] = this;
});

public void Action(string value)
{
    Console.WriteLine("call back value : "+value);
}

javascript端(网页端)

window.callback.Action('test this');

你可以得到如下的console.log

回调值:测试这个

于 2020-03-27T04:58:39.153 回答