所以我有一个名为FormType的Object。 它包含一些字符串,布尔等。
但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还包含一些IList。
如何绕过这个错误,它发生在这一行:
var xm = new XmlSerializer(typeof(T));
答案 0 :(得分:2)
XmlSerializer
无法反序列化接口(除非您想在FormType对象上自己实现IXmlSerializable)。这就是你看到异常的原因。
如果您将IList更改为列表,它应该像以下示例一样工作:
[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
。还有其他解决方案使用抽象类型,反射和类似,但我不会称之为干净。