我有这样的界面:
public interface IDocument : ISerializable { Boolean HasBeenUploaded { get; set; } void ISerializable.GetObjectData(SerializationInfo, StreamingContext) { } }
有三个文件继承自此,所有这些文件序列化都很好.但是在创建一个简单的Web服务时,它什么都不做,可以将它们上传到...
public class DCService : System.Web.Services.WebService { [WebMethod] public Boolean ReceiveDocument(IDocument document) { DBIO io = new DBIO(); return io.InsertIntoDB(document); // does nothing; just returns true } }
我试图运行它时得到这个:"无法序列化接口IDocument"
我不太清楚为什么这会成为一个问题.我知道有些人遇到了麻烦,因为他们不想强制子类来实现自定义序列化,但我确实如此,到目前为止它已经成功了.
编辑>如果我创建接受实现接口的对象的单个web方法,它工作正常,但这削弱了客户端/服务器之间的合同(并破坏了首先拥有接口的目的)
您可能需要对Web方法使用XmlInclude属性.可以在这里找到一个例子.我们之前遇到过这个问题,并且已经将XmlInclude属性添加到客户端上的Web服务代理类和某些Web服务方法.
[WebMethod] [XmlInclude(typeof(MyDocument))] public Boolean ReceiveDocument(IDocument document) { DBIO io = new DBIO(); return io.InsertIntoDB(document); // does nothing; just returns true }