2014-09-23 47 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