EBa*_*arr 8 c# thread-safety json.net
如果我在我的项目中使用相同的设置,我可以实例化我的一个静态副本JsonSerializerSettings并在整个过程中使用它吗?
例如 :
private static readonly JsonSerializerSettings settings = new JsonSerializerSettings {
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.None,
DateFormatHandling = DateFormatHandling.IsoDateFormat,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
};
public static string ToJSONString(this Object source) {
return JsonConvert.SerializeObject(source, settings);
}
Run Code Online (Sandbox Code Playgroud)
那么,我是不是很危险?
以下对话发生在 twitter 上,@JamesNK 是 JSON.net 的作者:https ://twitter.com/jonathan_oliver/status/332227095616966656
来自:乔纳森·奥利弗?@jonathan_oliver 致:@JamesNK
静态 JsonConvert.DeserializeObject 方法线程安全吗?使用 5.0.4 和 5.0.5 遇到一些奇怪的错误。
回复:
詹姆斯牛顿金??@JamesNK 2013 年 5 月 8 日@jonathan_oliver
是的。如果不是,请在 GitHub 上创建问题
回复:
乔纳森·奥利弗 ?@jonathan_oliver 2013 年 5 月 9 日
@JamesNK 事实证明,附加到我与 JsonConvert 一起使用的静态 JsonSerializerSettings 对象的 ContractResolver 不是线程安全的。
我没有看到曾经提交过错误,但这确实暗示它们的设计应该是线程安全的,但是可能有实现特定的方法来破坏它,或者它可能不是一个整体。