我正在编写一个使用的自定义库ServiceStack.Text https://github.com/ServiceStack/ServiceStack.Text内部。使用我的其他库也可能使用 ServiceStack.Text。
我想改变一些JsConfig
选项(特别是日期处理),但是,像任何好公民一样,我不希望对这些值的修改给我的消费者带来副作用。
很遗憾JsConfig
是一个静态类,因此它的设置是静态的,并且我相信会渗透到同一 AppDomain 中的 ServiceStack 的其他使用者。这是一种不受欢迎的行为。
有没有什么方法可以将我的配置更改范围限制为我对JsonSerializer
?
Update
我确实意识到有JsConfig.Reset
方法,不幸的是,如果调用者已经自定义了它,那么它就会丢失。
我可以保存值并恢复它们,但我必须同步对序列化器的访问,这也有点违背了目的。
希望我缺少一些简单的东西?
ServiceStack.Text 中缺少此功能,因此我添加了一个拉取请求 https://github.com/ServiceStack/ServiceStack.Text/pull/253 for it.
基本上现在如果您想限制配置设置的范围,您可以使用以下语法:
using(var config = JsConfig.With(new Config { DateHandler = ... }))
{
}
一旦 using 块超出范围,这些值将不再被设置,ThreadStatic
也不会影响其他线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)