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

Van*_*nel 2 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

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

和:

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

我需要怎么做才能避免这些警告?

Mar*_*ell 5

输了[Serializable]。扔掉它-全部。XmlSerializer不在乎,您也不需要它。它无济于事,并引起此错误肯定的警告。

[Serializable]本质上仅与关联BinaryFormatter,这通常不是一个好选择。

  • @bommelding 从 .NET 2.0 开始正式过时了……不,我不是说 .NET Core 2.0,我是说 .NET 2.0 (2认同)