0

在 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 商店构建中那样传递上下文的方法?

4

1 回答 1

0

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

于 2013-04-16T21:01:24.487 回答