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