为什么ServiceStack.Text自定义反序列化设置不适用?

Arx*_*sos 5 c# serialization servicestack

我将ServiceStack.Text与ServiceStack(Web服务框架)一起使用.

我正在尝试为特定类型添加自定义序列化路由AppHost.Configure().但是,设置不适用/被忽略.

public AppHost : AppHostBase 
{
    ...

    public override void Configure(Container container)
    {
        //Register custom serialization routine
        ServiceStack.Text.JsConfig<CultureInfo>.SerializeFn = r => r.TwoLetterISOLanguageName;
        ServiceStack.Text.JsConfig<CultureInfo>.DeSerializeFn = r => return new CultureInfo(r);    
    }
}
Run Code Online (Sandbox Code Playgroud)

Arx*_*sos 7

ServiceStack.Text在内部进行非常大的缓存以实现快速性能.ServiceStack在AppHost.Configure()调用之前已经开始了缓存创建过程.

因此,要解决此问题,您需要在AppHost.Init()调用之前注册您的设置.

当然,ServiceStack.Text中的所有设置都不需要这样做 - 只有在AppHost.Configure()调用之前缓存的设置才需要它.