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



Json格式。Net,我在JsonSerializerSettings上设置上下文(类型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中空白的StreamingContext结构。我不相信这是最好的解决方案,但它现在对我来说确实很有效。

相关内容

  • 没有找到相关文章

最新更新