wcf コントラクト内でオブジェクトを使用Streamしているため、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、MessageContract継承されたコントラクトをクライアントに公開できないことKnownTypeです。
グーグルで検索してみましたが、に関連するものは見つかりませんでしKnownTypeたMessageContract。
コメントで提案されているように...メッセージコントラクトを更新しましKnownTypeたが、サービス参照を通じてクライアントに公開されていません...
[MessageContract]
[KnownType(typeof(FileSystemStoredDocument))]
[KnownType(typeof(FileBoundStoredDocument))]
[KnownType(typeof(SharepointStoredDocument))]
public class Document : DocumentInfo, IDisposable
{
}
ここで何が問題なのか、誰でも助けてくれますか?
注:ALLKnownTypeはから継承されていますDocument