繁体   English   中英

将包含IList的对象序列化为XML

[英]Serialize to XML an object that contains IList

所以我有一个叫做FormType的对象。 它包含一些字符串,布尔值等。

但是FormType也包含以下内容:

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

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

这就是为什么我收到此错误的原因:

{"Cannot serialize member 'Domain.FormType.Versions' of type 'System.Collections.Generic.IList`1

另外-FormTypeVersion还包含一些ILists。

如何解决此错误,它发生在以下行:

var xm = new XmlSerializer(typeof(T));

XmlSerializer无法反序列化接口(除非您想自己在FormType对象上实现IXmlSerializable)。 这就是为什么您看到该异常。

如果将IList更改为List,则它应如以下示例所示工作:

[Serializable]
public class FormType
{
    private List<FormTypeVersion> _versions = new List<FormTypeVersion>();

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

如果您不愿意将类型从IList更改为List,那么最干净的方法是实现IXmlSerializable 还有其他使用抽象类型,反射和类似类型的解决方案,但我不会称之为干净。

暂无
暂无

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

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