質問

WCF ServiceContractで使用されているすべてのタイプ(INTや文字列などのプリミティブ以外)をservicnecknownType属性で宣言する必要があることを理解しています。しかし、私はカスタムオブジェクトを構築しました、そして、それは私のWCFサービスを問題なく送信します - 私はそれのためにサービスを追加していませんが。なぜこれが機能するのかを誰かが説明しますか?

[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
    [OperationContract]
    List<MyObject> LoadMyObjects();
}

[DataContract]
public class MyObject
{
    [DataMember]
    private int batchID;
    [DataMember]
    private int fileID;
    [DataMember]
    private string fileName;
    [DataMember]
    private DateTime importStartTime;
// ...
}
役に立ちましたか?

解決

いいえ、それは正しくありません。 servicknownType(またはデータ契約で既知のタイピング)は、サービスで使用されるタイプにのみ必要ですが、操作定義では指定されていません。あなたの場合、MyObjectクラスを使用するLoadMyObjects操作を定義しました。操作はmyobjectを直接使用するため、myobjectをservicknowntypeとして追加する必要はありません。ただし、Myobjectから導出されたMyobject2を定義すると、Myobject2をservicknownTypeとして宣言するまで、loadMyObjects操作からそのオブジェクトを送信できません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top