当前位置:  开发笔记 > 编程语言 > 正文

如何序列化IList <T>?

如何解决《如何序列化IList<T>?》经验,为你挑选了1个好方法。

我有一个返回IList的OR映射器(iBatis.Net).

// IList QueryForList(string statementName, object parameterObject);
var data = mapper.QueryForList(statement, parameters);

我试图在webservice中使用它想要以1:1的方式返回数据.当然我不能在WebMethod中返回IList,因为它是一个接口,因此不可序列化.

我发现映射器确实返回了一个List.但是我害怕将其转换为List,因为当然,mappers的内部工作方式可能会在未来的版本中发生变化(而且它感觉很脏).

我应该......

a) return new List(data);

b) return (List)data;

c) // your solution here

非常感谢!



1> Greg Beech..:

如果它真的是一个,List但你想要防止变化并让它仍然有效,那么最高性能的解决方案是尝试将其转换为列表,如果失败则从其内容创建一个新列表,例如

var data = mapper.QueryForList(statement, parameters);
var list = data as List ?? new List(data);

但是,您提到您无法返回接口,因为它是一个Web服务.对于ASMX和XmlSerializer类,这可能是正确的,但如果您使用WCF构建Web服务并使用DataContractSerializer它,那么它将很乐意序列化集合接口(作为服务的输入和输出).虽然这种变化可能比你想要的要大一些!


哇..那就是库尔.我不知道你可以与WCF合作.摇滚!
推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有