我正在尝试使用ASP.NET WebServices创建一个简单的留言簿Web服务。
尝试序列化对象列表时,出现以下异常:
System.InvalidOperationException: The type of the argument object 'GuestBookService.GuestBookEntry' is not primitive.
如何解决此错误?
答案 0 :(得分:2)
如果GuestBookService是一个子类,并且持有它的属性属于其超类'类型,那么你必须为Serializer提供如下额外类型:
Type[] extraTypes = {typeof(GuestBookService)};
XmlSerializer serializer = new XmlSerializer(typeof(DataContainerClass),extraTypes);
答案 1 :(得分:1)
是GuestBookEntry标记为可序列化? http://ondotnet.com/pub/a/dotnet/2002/08/26/serialization.html
答案 2 :(得分:1)
我有同样的错误,但在我的情况下,解决方案是不同的。 我的错误是我创建了一个返回基类类型的Web方法,并尝试返回派生类。
public BaseClass MyMethod() { /*...*/ }
我尝试返回BaseClassDerivativeA,BaseClassDerivativeB等。派生类将它们自己的字段添加到基类的字段中。 我注意到这种意义上的多态性似乎是not supported。
我已将我的派生类推广到单个类,因此在返回类型中删除了这种多态性。这解决了我的错误。