gpt4 book ai didi

c# - 使用接口(interface)而不是具体类型 IEnumerable 导致异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:32 25 4
gpt4 key购买 nike

最好使用接口(interface)而不是具体类型,这样我们的应用程序将具有模块化和使用任何所需类型的自由(只要它实现了接口(interface));

所以在我的 Worker 对象中,我创建了一个名为 CarNumbers 的成员,类型为 IEnumerable:

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

现在我尝试将 Worker 对象序列化为 XML,但出现异常:

Cannot serialize member Worker.CarNumbers of type System.Collections.Generic.IEnumerable`1[[string]] because it is an interface.

如何在不破坏独立性和使用具体类型的情况下解决这个异常?

最佳答案

这取决于序列化器。一般来说,序列化需要能够创建具体类型(否则,在反序列化时它怎么知道实际创建什么?你不能只创建一个接口(interface)的实例......)所以你必须泄漏一些抽象某处。

综上所述,使用 NetDataContractSerializer让您从代码的角度做您想做的事,尽管它所做的只是在序列化输出中保留必要的具体类型。

关于c# - 使用接口(interface)而不是具体类型 IEnumerable 导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7713505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com