インターフェイスを持つ suboject を含む DTO (WCF クライアントから WCF サーバーへ) を送信しようとしています。
私のコード:
WCF サービス メソッド:
[OperationBehavior(TransactionScopeRequired = true)]
public void SendTest(MyTestDto testDto)
{
...
}
MyTestDto クラス:
[Serializable]
[DataContract(Name = "MyTestDto")]
public class MyTestDto : ITestDto
{
[DataMember(IsRequired = true, Order = 1, Name = "MyTestDto")]
[DataMemberValidation(IsRequired = true)]
public ITest Test { get; set; }
}
ITest インターフェイス:
public interface ITest
{
int Field1 {get;set;}
int Field2 {get;set,}
}
問題は、FaultException
サーバーからクライアントに MyTestDto を送信すると、常にエラーが発生することです。WSDL ファイルを分析したところ、テスト フィールドは Type:AnyType
でした。これが問題だと思います。ITest
を抽象クラスに置き換えたので、通信が機能します (もちろん、ServiceKnownType
属性を抽象クラスに設定する必要があります)。
手伝って頂けますか?インターフェイスではなく抽象クラスで機能するのはなぜですか?