У меня есть такой интерфейс:
public interface IDocument : ISerializable
{
Boolean HasBeenUploaded { get; set; }
void ISerializable.GetObjectData(SerializationInfo, StreamingContext) { }
}
Есть три документа, которые наследуются от этого, каждый из которых отлично сериализуется. Но при создании простого веб-сервиса это ничего не делает, где они могут быть загружены в ...
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»
Я не совсем уверен, почему это будет проблемой. Я знаю, что у некоторых людей возникли проблемы, потому что они не хотели заставлять подклассы реализовывать пользовательскую сериализацию, но я это делаю, и до этого момента это было успешно.
edit> Если я создаю отдельные веб-методы, которые принимают объекты, которые реализуют интерфейс, он работает нормально, но это ослабляет контракт между клиентом / сервером (и подрывает цель иметь интерфейс в первую очередь)