2016-01-15 19 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('。是的? –