繁体   English   中英

序列化包含列表的类?

[英]Serialize a class that contains a list?

我在这里可能做错了所有,但是我创建了一个包含列表的类,需要序列化该列表。 (是否有更好的方法或其他建议来具有多个没有列表的接口?)

我一直在与序列化自定义类做的很好,但是由于某种原因,这个没有解决。

[XmlRoot("interfaces", Namespace = "")]
[XmlInclude(typeof(Interface))]
public class Interfaces
{
    [XmlArray("interfaces")]
    [XmlArrayItem("interface")]
    List<Interface> _IflList = new List<Interface>();
    public List<Interface> IflList
    {
        get { return _IflList; }
        set { _IflList = value; }
    }
    public void Add(Interface objInterface)
    {
        _IflList.Add(objInterface);
    }
}

[XmlType("interface")]
public class Interface
{
    string _name;
    public string name
    {
        get { return _name; }
        set { _name = value; }
    }
    public Interface(string name)
    {
        this._name = name;
    }
}

我收到错误尝试进行序列化时There was an error reflecting type 'JunOSConfig.Interfaces'

    public string SerializeObject(object objToSerialize, bool StripXmlVer, bool FormatOutput)
    {
        string strReturn = "";

        XmlSerializerNamespaces xns = new XmlSerializerNamespaces();
        xns.Add("", "");
        Type objType = typeof(JunOSConfig.Interfaces);
        XmlSerializer xs = new XmlSerializer(objToSerialize.GetType());
        XmlWriterSettings xws = new XmlWriterSettings();
        xws.OmitXmlDeclaration = StripXmlVer;

        StringWriter sw = new StringWriter();
        XmlWriter xw = XmlWriter.Create(sw, xws);

        xs.Serialize(xw, objToSerialize, xns);
        strReturn = sw.ToString();

        if (FormatOutput)
        {
            return Convert.ToString(XElement.Parse(strReturn));
        }
        else
        {
            return strReturn;
        }
    }

除了带有一个参数的构造函数

public Interface(string name)
{
    this._name = name;
}

您将需要另一个无参数的构造函数,例如

public Interface()
{
}

如果您自己不声明构造函数,则将生成不带参数的构造函数。

然后它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM