繁体   English   中英

Windows Store SDK中StreamingContext为空,如何使用json.net传递反序列化上下文?

[英]StreamingContext is empty in Windows Store SDK, how can deserialization context be passed using json.net?

在Json.Net中,我在JsonSerializerSettings上设置Context(类型StreamingContext)对象,以通过[OnDeserialized]方法传递对象在反序列化过程中使用的信息。 我通过创建一个新的StreamingContext对象并设置其他对象参数来做到这一点。 所有这些在非Windows商店版本中均能完美运行:

    public static T Deserialize<T>(string jsonString, DeserializationContext context = null)
    {
        JsonSerializerSettings settings = new JsonSerializerSettings()
        {
            // Win store builds fail on this line:
            Context = new StreamingContext(StreamingContextStates.Other, context),
            TypeNameHandling = TypeNameHandling.Auto
        };
        return JsonConvert.DeserializeObject<T>(jsonString, settings);

在Windows Store SDK中, StreamingContext对象存在但为空(Context和State都不存在,并且没有非默认构造函数)。 看来这个对象现在完全没有用了,因为它现在只是一个空结构!

有谁知道一种解决此新限制并传递上下文的方法,例如在非Windows商店中?

我最终修改了json.net源。 我将JsonSerializer上的Context对象更改为object类型,而不是StreamingContext,并将这些更改冒充到源的其余部分。 这使我避免了.NET for Windows Store中空白的StreamingContext结构。 不相信这是最好的解决方案,但现在肯定对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM