当前位置:编程学习 > C#/ASP.NET >>

WebService 接口中的参数是接口时怎么序列化和反序列化的问题

最近有个WebService的项目,服务端发布的WebService接口包含一个接口参数,而且这个接口还比较复杂。

 

于是用了gson来序列与反序列,但是反序列时,说没有无参构造函数。

 

好吧,我接口哪有构造函数,于是看gson的API,发现可以使用InstanceCreator这个接口来实现无参构造的问题。

 

Java代码  

//这里是gson API中的例子  
class IdInstanceCreator implements InstanceCreator<Id> {  
   public Id createInstance(Type type) {  
     return new Id(Object.class, 0L);//我怎么知道是那个子类啊啊啊。。。  
   }  
 } 
 
 

 

但问题又来了,如颜色部分。 

 

卡在这里卡了一天了,翻阅网络上各种帖子,也没见人有说WS传参中有接口类型的。。。。

 

大神们看下我这个思路是不是哪有问题?

有没有哪位大神遇到过类似的问题或者有好的解决方法? webservice gson --------------------编程问答-------------------- GSON没有实现过,但是如果使用其他的序列化类,序列化接口是可以的,例如XMLSerXXX

只是在序列化时候不能直接序列化接口类型的,因为接口类型毕竟只是对一组行为和属性的描述,所有需要转变下思路将接口类型用object标识,我用个XmlSerializer例子来说明吧:
一个类:

[Serializable]
public class Person
{
public string Name{get;set;}

//我其实是个IList
public object RelNames{get;set;}

}

实现

class Program
{
public static void Main(string[] args)
{
XmlSerializer sre = new XmlSerializer(typeof( Person),new Type[] {typeof(List<string>)});
FileStream fs = new FileStream("c:\\te.xml",FileMode.CreateNew,FileAccess.ReadWrite);
sre.Serialize( fs,new Peson{
               Name = "andy",
               RelNames = new List<string>{ "11111","22222"}
              });

}
}
--------------------编程问答-------------------- ps: 序列化的核心就是对反射的应用,可以自己定制序列化工具

而且实际应用中是不推荐对接口的序列化操作的,如果确实需要,请做个map  --------------------编程问答--------------------
引用 2 楼 u011573693 的回复:
ps: 序列化的核心就是对反射的应用,可以自己定制序列化工具

而且实际应用中是不推荐对接口的序列化操作的,如果确实需要,请做个map 

谢谢你的回复!
确实gson不支持接口序列化,我现在换了一种思路,将接口中的属性元素打包放一个bean中,传过去后再重新构造成接口,过程类似于自定义序列化。
补充:.NET技术 ,  Web Services
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,