c# – 使用ServiceStack.Text序列化接口类型列表
我正在寻找将BinaryFormatter序列化以外的东西引入我的应用程序以最终使用Redis的方法. ServiceStack
JSON是我想要使用的,但它可以用接口做我需要的吗?
它可以序列化(通过插入自定义__type属性) public IAsset Content; 但不是 public List<IAsset> Contents; – 列表在序列化数据中显示为空.有没有办法做到这一点 – 序列化接口类型列表? 该应用程序是大而老的,它使用的对象的形状可能不会被允许改变. 解决方法
引自
http://www.servicestack.net/docs/framework/release-notes
你可能不需要做太多:)
不多: public interface IAsset { string Bling { get; set; } } public class AAsset : IAsset { public string Bling { get; set; } public override string ToString() { return "A" + Bling; } } public class BAsset : IAsset { public string Bling { get; set; } public override string ToString() { return "B" + Bling; } } public class AssetBag { [JsonProperty(TypeNameHandling = TypeNameHandling.None)] public List<IAsset> Assets { get; set; } } class Program { static void Main(string[] args) { try { var bag = new AssetBag { Assets = new List<IAsset> {new AAsset {Bling = "Oho"},new BAsset() {Bling = "Aha"}} }; string json = JsonConvert.SerializeObject(bag,new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }); var anotherBag = JsonConvert.DeserializeObject<AssetBag>(json,new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |