2010-06-08 83 views
0

我想使用ASP.NET WebServices创建一个简单的留言簿Web服务。参数对象的类型[类型]不是原始的

当试图序列化对象的列表,我得到以下异常:

System.InvalidOperationException: The type of the argument object 'GuestBookService.GuestBookEntry' is not primitive. 

我怎样才能解决这个问题?

+3

能否请您发布一些代码周围的行抛出这个错误?很难单独诊断。 – 2010-06-08 01:58:59

回答

1

我有同样的确切的错误,但在我的情况下,解决方案是不同的。 我的错误是我创建了一个返回基类类型的Web方法,并试图返回派生类。

public BaseClass MyMethod() { /*...*/ } 

我会尝试返回BaseClassDerivativeA,BaseClassDerivativeB等加入了自己的田基类的字段中的派生类。在这个意义上,我注意到多态性似乎是not supported

我已经将我的派生类推广到一个类,从而在返回类型中删除了这种多态。这解决了我的错误。

2

如果GuestBookService是一个子类和属性抱着它是它的父类的类型,那么你必须给串行额外的类型是这样的:

Type[] extraTypes = {typeof(GuestBookService)}; 
XmlSerializer serializer = new XmlSerializer(typeof(DataContainerClass),extraTypes); 
+0

由于某些原因,即使在父类中使用了'XMLInclude'和'KnownType',我仍然必须这样做,以便在尝试从Android应用程序与WCF服务通信时清除错误。 – 2013-08-15 16:23:23

相关问题