2014-09-23 76 views
0

如何配置Json De/Serialization以使用特定类型或子类型的自定义函数。jsconfig注册(标记)接口的自定义de /序列化

我预计注册特定的De/Serialization函数也将用于实现接口的子类或类型。

public class FooA {} 

public class FooB :FooA {} 

JsConfig<FooA>.RawDeserializeFn = x => {} 

但功能不用于类FooB类型..

我也试过这样:

public interface IFoo {} 

public class Foo :IFoo {} 

JsConfig<IFoo>.RawDeserializeFn = x => {} 

回答

1

类型化的配置不支持开放类型,你需要明确的时候配置类型,例如:

JsConfig<FooA>.RawDeserializeFn = fn; 
JsConfig<FooB>.RawDeserializeFn = fn; 
+0

任何解决方法?我不知道类型的前期.. – Marco 2014-09-23 18:26:41

+0

@Marco不是真的,你可以使用[静态ParseJson方法](https://github.com/ServiceStack/ServiceStack.Text/commit/b82ac1e0328acf5a5076de9c526a5b1df8f274b5),否则你可以尝试扫描为自己的类型组装自己的程序集并手动将它们连接起来,但这需要一点努力。就我个人而言,我会用更平坦的模型和[避免序列化中的继承](http://stackoverflow.com/a/10759250/85785)。 – mythz 2014-09-23 18:48:45