gpt4 book ai didi

c# - 创建一个可序列化的类 - 复杂对象

转载 作者:行者123 更新时间:2023-12-04 14:33:23 25 4
gpt4 key购买 nike

我需要将数据序列化为 XML,但我很难弄清楚如何做到这一点。 (在 Visual Studio 中)

我需要创建结构如下所示的这种类型的 XML。但是 Object FormType 包含 ILists,它不会序列化。

<?xml version="1.0" encoding="utf-16"?>
<VersionXml xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ImportId>1</ImportId>
<Environment>SIT</Environment>
<DateExported>12/2/2014</DateExported>
<FormType>
<Id>4000</Id>
<FormTypeVersion>
<DisplayName>display name here</DisplayName>
<FormNumber>12345<FormNumber>
<Name>12345-abc<Name>
<CompanyId>1</CompanyId>
<Active>1<Active>
<RevisionHistoryNumber>2<RevisionHistoryNumber>
<FormTypeVersion>
<FormTypeVersion>
<DisplayName>display name here</DisplayName>
<FormNumber>12345<FormNumber>
<Name>12345-abc<Name>
<CompanyId>1</CompanyId>
<Active>1<Active>
<RevisionHistoryNumber>3<RevisionHistoryNumber>
<FormTypeVersion>
</FormType>
<FormType>
<Id>4001</Id>
<FormTypeVersion>
<DisplayName>another one here</DisplayName>
<FormNumber>456<FormNumber>
<Name>456-bcd<Name>
<CompanyId>1</CompanyId>
<Active>1<Active>
<RevisionHistoryNumber>3<RevisionHistoryNumber>
<FormTypeVersion>
<FormTypeVersion>
<DisplayName>another one here</DisplayName>
<FormNumber>456<FormNumber>
<Name>456-bcd<Name>
<CompanyId>1</CompanyId>
<Active>1<Active>
<RevisionHistoryNumber>1<RevisionHistoryNumber>
<FormTypeVersion>
</FormType>
</VersionXml>

这是我尝试创建的类,但 FormType 不会序列化并出现反射器错误

[Serializable]
public class FormXml
{
public string ImportID { get; set; }
public string Environment { get; set; }
public string DateExported { get; set; }
public IEnumerable<FormType> FormType { get; set; }
}

这是收到的错误:

Cannot serialize member FormXml.FormType of type System.Collections.Generic.IEnumerable`1..... because it is an interface.

我无法将 IList 更改为列表 - 那么是否有其他方法可以做到这一点?

这是 FormType.cs

[Serializable]
public class FormType : Entity
{
public virtual ProductCode Product { get; set; }

public virtual String DisplayName { get; set; }

public virtual String FormNumber { get; set; }

public virtual String Name { get; set; }

public virtual Boolean Active { get; set; }

private IList<FormTypeVersion> _versions = new List<FormTypeVersion>();

public virtual IList<FormTypeVersion> Versions
{
get { return _versions; }
set { _versions = value; }
}
}

最佳答案

要实现这一点,请使用可序列化类型而不是 IEnumerable<FormType> , 也许是 List<FormType>

[编辑] 当然,FormType 也必须实现 ISerializable。

关于c# - 创建一个可序列化的类 - 复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27313275/

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