我有一个标有 ScriptableType 和 ScriptableMember 的 Silverlight 类,我希望能够将对象从 Silverlight 传递到 javascript。当我调用 JSON.stringify (在 javascript 中)时,我希望收到对象的 JSON 表示形式,但我得到的只是{}
该类定义为:
[ScriptableType()]
public class MyEvent
{
[ScriptableMember(ScriptAlias = "eventContent")]
public int EventContent { get; set; }
}
我像这样从 Silverlight 传递对象:
var jsonObject = new MyEvent { EventContent = 1 };
HtmlPage.Window.Invoke("publishValue", topic, jsonObject);
在 javascript 中我正在执行以下操作:
alert(topic);
alert(jsonObject);
alert(JSON.stringify(jsonObject));
当我使用调试器时,我只看到jsonObject
作为类型Object
但电话alert(jsonObject)
返回正确的类型,如果我访问该属性jsonObject.eventContent
我得到了正确的值,但它没有正确序列化JSON.stringify
.
有人告诉我我做错了什么吗?
我不想在发送到 javascript 之前在 Silverlight 中序列化对象。
Cheers
AWC
JSON.stringify
使用枚举对象的可枚举属性for...in
。如果属性不可枚举,它们将不会包含在结果字符串中。
Silverlight 对象是外部对象,而不是本机 javascript 对象。就像 ActiveXObject 一样,属性不可发现/可枚举。我不确定是否有办法解决这个问题。我发现了几页关于实现 IEnumerable 的提示,以便能够使用foreach
在母语中,但我不确定这是否会延续到 JavaScript 中。
我不认为这是可能的,但你永远不知道。如果您需要一个对象是可枚举的,唯一的方法可能是使用System.Json
并打电话eval
在文档上以 JavaScript 对其进行反序列化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)