javascript 尝试解析包含从 C# 发送的列表的对象时 CefSharp 崩溃

CefSharp crashing when javascript tries to parse an object containing a list sent from C#

我正在使用 CefSharp 在 winforms 应用程序中包含一个网络浏览器 运行 angularjs 代码。

我能够将 c# 对象发送到 js 端,然后在它们仅包含字符串、整数等时使用它们。但是当我尝试发送一个包含值列表的对象时,CefSharp 在它试图在 js 端解析它时崩溃。

C#代码示例:

public class TestClass
{
    public string name { get; set; }
    public string other { get; set; }
    public List<int> ints { get; set; } 
}

工作对象:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello"
};

导致崩溃的对象:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello",
    ints = new List<int>(){0,1}
};

我是如何传给js代码的:

browser.RegisterJsObject("testObj", tc);

我的angular代码设置使用:

$scope.$watch(function ()
{ return window.testObj },
function () {
    $scope.someField = window.testObj;
});

我尝试在传递对象之前对对象执行 JsonConvert.SerializeObject,但它最终只是 js 端的一个空对象。

编辑 - 解决方案

C# 到 JS:

将测试类更改为:

TestClass tc = new TestClass()
{
    name = "Bobby Test",
    other = "Hello",
    ints = new int[] {0,1}
};

并且它可以与上面的代码一起正常工作,而无需直接调用任何序列化或反序列化方法。

JS 到 C#:

虽然这不是我的问题:

我将一个对象传递给带有回调函数的 js 端到 c#,回调函数接受来自 js 端的序列化字符串,然后我在 c# 端反序列化。

Chromium 只能处理 javascript 简单类型(数组、数字、字符串等)

我通常在服务器端对任何复杂数据做的是return一个JSON字符串:

JavaScriptSerializer().Serialize(myObject);

然后在客户端使用

重构它
JSON.parse(myObjectAsString);

适合我