我将 ASP.Net 与 MVC 一起使用,并且希望仅针对某些请求使用自定义 SerializeFn。看起来 JsConfig 的东西是静态的,我确实看到了 JsConfig.BeginScope() 的东西来保持配置范围,但它似乎不适用于自定义序列化器/反序列化器。如果我定义了一个自定义 SerializeFn,它是否会因为它是静态的而在请求中停留?如果是这样,有什么方法可以阻止这种情况发生吗?
谢谢。
我将 ASP.Net 与 MVC 一起使用,并且希望仅针对某些请求使用自定义 SerializeFn。看起来 JsConfig 的东西是静态的,我确实看到了 JsConfig.BeginScope() 的东西来保持配置范围,但它似乎不适用于自定义序列化器/反序列化器。如果我定义了一个自定义 SerializeFn,它是否会因为它是静态的而在请求中停留?如果是这样,有什么方法可以阻止这种情况发生吗?
谢谢。
自定义 SerializerFn 是静态的,在JsConfigScope 范围配置中不可覆盖,因此它们确实适用于所有请求。
由于自定义序列化程序的范围不受限制,一种解决方案是将其映射到自定义类型并将序列化程序附加到该类型:
public class CustomPoco : Poco {}
JsConfig<CustomPoco>.SerializerFn = //...;
因此,当您需要特殊序列化时,您可以将其映射到您的自定义类型并对其进行序列化:
var customType = dto.ConvertTo<CustomPoco>();
var jsonWithCustomSerialization = customType.ToJson();