Field是可序列化类型的成员,但是类型不可序列化

时间:2018-06-13 09:29:58

标签: c# xml serializable

我正在使用.NET Framework 4.7开发一个C#库。

我想将类ProductionOrderXmlFile转换为XML文件:

[Serializable]
public class Level
{
    [XmlElement("Id")]
    public byte Id { get; set; }
    [XmlElement("Name")]
    public string Name { get; set; }
    [XmlElement("CodeType")]
    public byte CodeType { get; set; }
    [XmlElement("CodeSourceType")]
    public byte CodeSourceType { get; set; }
    [XmlElement("HelperCodeType")]
    public byte HelperCodeType { get; set; }
    [XmlElement("HelperCodeSourceType")]
    public byte HelperCodeSourceType { get; set; }
    [XmlElement("PkgRatio")]
    public int PkgRatio { get; set; }
}

[Serializable]
public class VarData
{
    [XmlElement("VariableDataId")]
    public string VariableDataId { get; set; }
    [XmlElement("LevelId")]
    public byte LevelId { get; set; }
    [XmlElement("Value")]
    public string Value { get; set; }
}

/// <summary>
/// Class to load a production order from a xml file.
/// </summary>
[Serializable, XmlRoot("root")]
public class ProductionOrderXmlFile
{
    [XmlElement("ProductionOrderName")]
    public string ProductionOrderName { get; set; }
    [XmlElement("NumItems")]
    public int NumItems { get; set; }
    [XmlElement("ProductCode")]
    public string ProductCode { get; set; }
    [XmlElement("Reduction")]
    public float Reduction { get; set; }
    [XmlArray("Levels")]
    [XmlArrayItem("Level")]
    public List<Level> Levels { get; set; }
    [XmlArray("VariableDatas")]
    [XmlArrayItem("VariableData")]
    public List<VarData> VariableData { get; set; }
}

但是在字段public List<Level> Levels { get; set; }public List<VarData> VariableData { get; set; }中,我收到了警告:

警告CA2235字段级别是ProductionOrderXmlFile类型的成员,可以序列化,但类型为System.Collections.Generic.List,不可序列化

警告CA2235 Field VariableData是ProductionOrderXmlFile类型的成员,它是可序列化的,但类型为System.Collections.Generic.List,不可序列化

我需要做些什么来避免这些警告?

1 个答案:

答案 0 :(得分:3)

失去[Serializable]。把它扔掉 - 所有这些。 XmlSerializer并不关心它,你也不需要它。它没有帮助你,并且正在引起这种误报警告。

[Serializable]基本上BinaryFormatter联系起来,这通常不是一个好选择。