[英]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.