簡體   English   中英

為什么我的對象不需要ServiceKnownType?

[英]Why is ServiceKnownType not needed for my object?

據我了解,在WCF ServiceContract中使用的每種類型(除了某些諸如int和string之類的原語之外)都需要使用ServiceKnownType屬性進行聲明。 但是,我已經構建了一個自定義對象,並且即使沒有為它添加ServiceKnownType,它也可以毫無問題地在我的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;
// ...
}

不,這是不正確的。 ServiceKnownType(或數據協定上的KnownTypeAttribute)僅對於服務使用的類型才需要,但在操作定義中未指定。 在您的情況下,您已定義了使用MyObject類的LoadMyObjects操作。 因為該操作直接使用MyObject,所以不必將MyObject添加為ServicKnownType。 但是,如果您定義派生自MyObject的MyObject2,則除非將MyObject2聲明為ServiceKnownType,否則將無法通過LoadMyObjects操作發送該對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM