2016-01-15 21 views
0

有没有办法在全球范围内避免JsConfig更改?ServiceStack.Text JsConfig全球更改

我只想自定义配置时序列化我的JSON,并不影响其他地方。

JsConfig.AlwaysUseUtc = true; 
JsConfig.ExcludeTypeInfo = true; 

JsConfig<DateTime>.RawSerializeFn = (DateTime time) => 
{ 
    return string.Format(CultureInfo.InvariantCulture, "\"{0}\"", time.ToString("yyyy-MM-dd HH:mm:ss,fff")); 
}; 
JsConfig<DateTime?>.RawSerializeFn = (DateTime? time) => 
{ 
    if (time.HasValue) 
     return string.Format(CultureInfo.InvariantCulture, "\"{0}\"", time.Value.ToString("yyyy-MM-dd HH:mm:ss,fff")); 
    return "null"; 
}; 

// avoid loss of precision 
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER 
JsConfig<long>.RawSerializeFn = (long num) => 
{ 
    if (num > 9007199254740991L || num < -9007199254740991L) 
     return string.Format(CultureInfo.InvariantCulture, "\"{0}\"", num); 
    return num.ToString(); 
}; 

回答

4

您可以使用静态JsConfig.With(...)方法指定更改范围。

一个示例,请参见4.0.48 Release Notes。只需使用第二种形式,像这样:

using(JsConfig.With(yourOptionHere: true) { 
    ... operations with overridden JsConfig settings 
} 
+0

谢谢,我不认为有一种方式来定制')RawSerializeFn'在'JsConfig.With('。是的? –