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

时间:2013-04-15 23:38:41

标签: json.net windows-store-apps

在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应用商店SDK中,StreamingContext对象存在,但为空(上下文和状态都不存在,并且没有非默认构造函数)。看来这个对象现在完全没用了,因为它现在只是一个空结构!

有没有人知道如何绕过这个新限制并传递上下文,就像在非Windows商店版本中一样?

1 个答案:

答案 0 :(得分:0)

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