c# - 如何让 JavaScriptSerializer 忽略 [ScriptIgnore] 标签?

标签 c# javascriptserializer scriptignore

我需要制作 JavaScriptSerializer忽略 [ScriptIgnore] 标签。我想我可以用定制的 JavaScriptConverter 来做到这一点.但是,我不太确定。我需要做的就是忽略该属性,其余的可以通过基本定义来完成。你可以看到 code for JavaScriptSerializer here .

我担心实现自定义转换器,例如 this example最终将无法正确序列化复杂的自定义对象图。

回顾微软的 JavaScriptSerializer 代码,第 252-253 行代码:

// Ignore all fields marked as [ScriptIgnore]
if (fieldInfo.IsDefined(typeof(ScriptIgnoreAttribute), true /*inherits*/)) 
 continue;

是我真正需要绕过的唯一部分。我只需要注释掉那行代码。不幸的是,这实际上是不可能的,所以我需要一些方法来忽略整个过程中的那一部分。

我怎样才能忽略那行代码,或者以某种方式提供不忽略 [ScriptIgnore] 属性的自定义实现?

最佳答案

我最终不得不模仿 JavaScriptSerializer 类并在模仿类内部提供一些定制。不确定我会建议这样做,还是它的可读性很强。另一方面,它有效,我喜欢它。

关于c# - 如何让 JavaScriptSerializer 忽略 [ScriptIgnore] 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805086/

相关文章:

c# - 通过动态更改字体大小使按钮控件中的文本适合调整大小

c# - 将类型 'System.Dynamic.DynamicObject 转换为 System.Collections.IEnumerable

c# - ASP.NET C# : JavascriptSerializer could not be found

javascript按值传递而不是按具有不同javascript序列化字符串的引用传递

c# - ScriptIgnore 导致其他属性,例如 StringLength 被忽略

c# - 忽略继承类中的 [ScriptIgnore] 属性

c# - 如何最大限度地减少 C# .NET 中从 Azure 查询传出的数据

c# - Moq 设置 ServiceLocator

c# - Concox TR06 GPS定位器解码4字节纬度/4字节经度