我Stream
在我的 wcf 合同中使用对象,因此被迫使用MessageContract
而不是DataContract
.
[MessageContract]
public class Document
{
[MessageBodyMember(Order = 1)]
public System.IO.Stream FileData;
}
[MessageContract]
public class A : Document
{
[MessageBodyMember]
public string input;
}
[MessageContract]
public class B : Document
{
[MessageBodyMember]
public string someProp;
}
[ServiceContract]
public interface ISomeService
{
[OperationContract]
Document SomeMethod(Document file);
}
我希望此服务的使用者创建 A 或 B 的对象并使用它调用服务。在服务方面,我可以将其类型转换为适当的对象,然后执行一些操作。
问题是我不能指定KnownType
withMessageContract
并且继承的合同不能暴露给客户,直到它们在服务中使用或声明为KnownType
.
我尝试用谷歌搜索,但找不到与KnownType
with相关的任何内容MessageContract
。
正如评论中所建议的......我更新了我的消息合同,KnownType
但它们仍然没有通过服务参考暴露给客户......
[MessageContract]
[KnownType(typeof(FileSystemStoredDocument))]
[KnownType(typeof(FileBoundStoredDocument))]
[KnownType(typeof(SharepointStoredDocument))]
public class Document : DocumentInfo, IDisposable
{
}
任何人都可以帮助我这里有什么问题吗?
注意:ALLKnownType
继承自Document