参数对象的类型[类型]不是原始的
问题描述:
我想使用ASP.NET WebServices创建一个简单的留言簿Web服务。参数对象的类型[类型]不是原始的
当试图序列化对象的列表,我得到以下异常:
System.InvalidOperationException: The type of the argument object 'GuestBookService.GuestBookEntry' is not primitive.
我怎样才能解决这个问题?
答
我有同样的确切的错误,但在我的情况下,解决方案是不同的。 我的错误是我创建了一个返回基类类型的Web方法,并试图返回派生类。
public BaseClass MyMethod() { /*...*/ }
我会尝试返回BaseClassDerivativeA,BaseClassDerivativeB等加入了自己的田基类的字段中的派生类。在这个意义上,我注意到多态性似乎是not supported。
我已经将我的派生类推广到一个类,从而在返回类型中删除了这种多态。这解决了我的错误。
答
如果GuestBookService是一个子类和属性抱着它是它的父类的类型,那么你必须给串行额外的类型是这样的:
Type[] extraTypes = {typeof(GuestBookService)};
XmlSerializer serializer = new XmlSerializer(typeof(DataContainerClass),extraTypes);
+0
由于某些原因,即使在父类中使用了'XMLInclude'和'KnownType',我仍然必须这样做,以便在尝试从Android应用程序与WCF服务通信时清除错误。 – 2013-08-15 16:23:23
能否请您发布一些代码周围的行抛出这个错误?很难单独诊断。 – 2010-06-08 01:58:59