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结构。我不相信这是最好的解决方案,但它现在对我来说确实很有效。