ServiceStack的SerializeFn自定义序列化器/反序列化器 - 坚持请求?

时间:2014-10-13 16:26:26

标签: servicestack servicestack-text

我正在使用ASP.Net和MVC,并希望仅为某些请求定制SerializeFn。看起来JsConfig的东西是静态的,我确实看到了JsConfig.BeginScope()的东西来保持配置范围,但它似乎不适用于自定义序列化器/反序列化器。如果我定义一个自定义的SerializeFn,它是否会跨越请求,因为它是静态的?如果是这样,有没有办法阻止这种情况发生?

感谢。

1 个答案:

答案 0 :(得分:1)

Custom SerializerFn是静态的,在JsConfigScope scoped configuration中不可覆盖,因此它们适用于所有请求。

由于自定义序列化程序的范围不受限制,因此一种解决方案是将其映射到自定义类型并将序列化程序附加到:

public class CustomPoco : Poco {}

JsConfig<CustomPoco>.SerializerFn = //...;

因此,当您需要特殊序列化时,您可以将其映射到自定义类型并序列化:

var customType = dto.ConvertTo<CustomPoco>();

var jsonWithCustomSerialization = customType.ToJson();