版权声明:本文为Boyd Wang原创文章,转载时请注明作者及本文链接
本文链接:http://www.boydwang.com/2014/03/net-webservice-dictionary-serialization/

今天在实现一个WebService方法时想放回一个Dictionary,编译通过,但是运行时报“is not supported because it implements IDictionary.”,这时由于Dictionary不能进行xml序列化引起的,因此我们要实现一个继承IXmlSerializable序列化接口的类才可以,代码如下:

然后在要返回Dictionary的方法里使用SerializableDictionary构造方法,像这样:

以为这样就大功告成了,但是在客户端引用的时候又出现了问题,看了一下Func()的返回结果居然是DataSet,然后费了好大的功夫想把DataSet转化一下,发现根本转不过来,于是又求助了万能的谷歌,在 栈溢出了 上面找到了下面的方法:

上面说明了这是一个微软官方的bug,需要手动把Reference.cs里面方法的返回类型DataSet手动修改成自定义的类型,例如:
原代码

把上面代码中的两处System.Data.DataSet改成Dictionary就大功告成了,像这样:

参考连接:
http://social.msdn.microsoft.com/Forums/vstudio/zh-CN/110fc8c1-99a2-4bc5-a1ac-1bee2fd3a922/dictionaryintstring?forum=visualcshartzhchs
http://support.microsoft.com/kb/815131#top



打赏
Categories: C#程序开发

Boyd Wang

想给自己贴上各种NB的头衔,NB程序员,NB自由职业者,最后发现自己其实是个Newbie,没办法,慢慢来吧

Leave a Reply

Your email address will not be published. Required fields are marked *

无觅相关文章插件,快速提升流量