【发布时间】:2010-10-14 03:05:07
【问题描述】:
我有一个这样的界面:
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”
我不太清楚为什么这会是个问题。我知道some people 遇到了麻烦,因为他们不想强制子类实现自定义序列化,但我这样做了,到目前为止它已经成功了。
edit> 如果我创建单独的 Web 方法来接受实现接口的对象,它可以正常工作,但这会削弱客户端/服务器之间的契约(并首先破坏拥有接口的目的)
【问题讨论】:
-
您好,只是想知道您最终解决了这个问题。我有一个类似的问题,我需要通过 web 服务返回一个接口对象的数组。
-
我做了很多事情:我最终使用了一个具体的类而不是一个接口,这很有效,但是从那里我切换到了 WCF 服务。最终,该项目的整个部分因“更紧迫的事情”而被“搁置”(无限期地阅读)
-
我试图强制序列化在 asmx web 服务中工作,包括 webmethod 签名中的接口,但即使所有必要的 XmlInclude 属性都到位,也无法让它工作。我的结论是,它要么无法完成,要么非常困难,没人会打扰。
标签: c# web-services serialization interface