簡體   English   中英

使用接口而不是具體類型IEnumerable會導致異常

[英]using interface and not concrete type IEnumerable cause an exception

最好是使用接口而不是簡潔的類型,因此我們的應用程序將具有模塊化和自由使用任何期望的類型(只要實現了接口)。

因此,在我的Worker對象中,我創建了一個名為IEnumerable類型的CarNumbers成員:

[DataContract(Namespace = "", Name = "Worker")]
public class Worker {
    ....
    ....
    [DataMember(IsRequired = false, Name = "CarNumbers")]
    public IEnumerable<string> CarNumbers  { get; set; }
    ....
}

現在,我嘗試將Worker對象序列化為XML,但出現異常:

無法序列化類型為System.Collections.Generic.IEnumerable`1 [[string]]的成員Worker.CarNumbers,因為它是接口。

如何在不破壞獨立性和使用精確類型的情況下解決此異常?

這取決於串行器。 通常,序列化需要能夠創建具體的類型(否則,在反序列化時它將如何知道實際要創建什么?您不能僅創建接口的實例...),因此必須泄漏一些抽象某處。

綜上所述 ,使用NetDataContractSerializer可以從代碼角度執行所需的操作,盡管它所做的只是在序列化輸出中保留必要的具體類型。

暫無
暫無

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

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