c# xmlSerializer 失败,因为 POCO 生成器创建 ICollection 对象
c# xmlSerializer fails because POCO generator creating ICollection objects
我在 SO 上看到了很多使用 XmlSerializer 的问题,是的,大多数问题似乎都与复杂对象有关。
我的问题本质上是一样的,但有一点不同。
我已经使用 Entityframework POCO 生成器创建了我的数据库对象。
现在,我正在尝试使用 XmlSerializer 比较复杂的对象。
因此,在我的保存中,我正在执行以下操作:
viewModelObj = returned object model from MVC page.
db.originalData.ToList() = original data object
var a = SerializeObject(viewModelObj);
var b = SerializeObject(db.originalData.ToList());
我的 SerializeObject 函数的定义如下。
public static string SerializeObject(this List<myObject> toSerialize)
{
var xmlSerializer = new XmlSerializer(toSerialize.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, toSerialize);
return textWriter.ToString();
}
}
因为 myObject 代表我的 POCO 类,列表被定义为 ICollection,这反过来导致 XmlSerializer 失败并显示以下消息:
Cannot serialize member toSerialize of type System.Collections.Generic.ICollection`1[[myObject]] because it is an interface.
正确的回答是什么。
每次我 运行 EF POCO 生成器时,它都会将所有内容更改回 ICollections,所以我的问题是如何使用 POCO 类 使用 XmlSerializer?
更新
更改代码自
public static string SerializeObject(this List<myObject> toSerialize)
到
public static string SerializeObject<T>(this List<T> toSerialize)
这是我收到错误消息的时间:
Cannot serialize member [object] of type System.Collection.Generic.ICollection'1[[object]] because it is an interface.
刚放弃。通过添加状态字段并检查它是否已更改来围绕此问题重新编码。
我在 SO 上看到了很多使用 XmlSerializer 的问题,是的,大多数问题似乎都与复杂对象有关。
我的问题本质上是一样的,但有一点不同。
我已经使用 Entityframework POCO 生成器创建了我的数据库对象。
现在,我正在尝试使用 XmlSerializer 比较复杂的对象。
因此,在我的保存中,我正在执行以下操作:
viewModelObj = returned object model from MVC page.
db.originalData.ToList() = original data object
var a = SerializeObject(viewModelObj);
var b = SerializeObject(db.originalData.ToList());
我的 SerializeObject 函数的定义如下。
public static string SerializeObject(this List<myObject> toSerialize)
{
var xmlSerializer = new XmlSerializer(toSerialize.GetType());
using (StringWriter textWriter = new StringWriter())
{
xmlSerializer.Serialize(textWriter, toSerialize);
return textWriter.ToString();
}
}
因为 myObject 代表我的 POCO 类,列表被定义为 ICollection,这反过来导致 XmlSerializer 失败并显示以下消息:
Cannot serialize member toSerialize of type System.Collections.Generic.ICollection`1[[myObject]] because it is an interface.
正确的回答是什么。
每次我 运行 EF POCO 生成器时,它都会将所有内容更改回 ICollections,所以我的问题是如何使用 POCO 类 使用 XmlSerializer?
更新
更改代码自
public static string SerializeObject(this List<myObject> toSerialize)
到
public static string SerializeObject<T>(this List<T> toSerialize)
这是我收到错误消息的时间:
Cannot serialize member [object] of type System.Collection.Generic.ICollection'1[[object]] because it is an interface.
刚放弃。通过添加状态字段并检查它是否已更改来围绕此问题重新编码。