C# 接口的XML序列化
我有一个问题,我在nHibernate项目中工作,该项目有以下目标:C# 接口的XML序列化,c#,xml,nhibernate,serialization,C#,Xml,Nhibernate,Serialization,我有一个问题,我在nHibernate项目中工作,该项目有以下目标: [Serializable] public class Prototype { public virtual long Id { get; private set; } public virtual string Name { get; set; } public virtual IList<AttributeGroup> AttributeGroups { get; private
[Serializable]
public class Prototype
{
public virtual long Id { get; private set; }
public virtual string Name { get; set; }
public virtual IList<AttributeGroup> AttributeGroups { get; private set; }
}
现在的问题是,我有以下例外:
Unable to cast object of type 'NHibernate.Collection.Generic.PersistentGenericBag`1[BCatalog.Entities.AttributeGroup]' to type 'System.Collections.Generic.List`1[BCatalog.Entities.AttributeGroup]'.
由于nHibernate,我无法更改IList的类型,我想反序列化该对象
如何解决此问题?对于序列化/反序列化过程,接口似乎很麻烦。您可能需要向使用具体类型的类添加另一个公共成员,并将接口属性标记为xml ignore。通过这种方式,您可以反序列化对象,而不会失去契约基础 如下所示:
[Serializable]
public class Prototype
{
public virtual long Id { get; private set; }
public virtual string Name { get; set; }
[XMLIgnore]
public virtual IList<AttributeGroup> AttributeGroups {
get { return this.AttributeGroupsList; }
}
public virtual List<AttributeGroup> AttributeGroupsList { get; private set;}
}
[可序列化]
公共类原型
{
公共虚拟长Id{get;private set;}
公共虚拟字符串名称{get;set;}
[XMLIgnore]
公共虚拟图书馆
关于,接口对于序列化/反序列化过程来说似乎很麻烦。您可能需要向使用具体类型的类中添加另一个公共成员,并将接口属性标记为xml ignore。这样,您就可以在不丢失合同基础的情况下反序列化对象
如下所示:
[Serializable]
public class Prototype
{
public virtual long Id { get; private set; }
public virtual string Name { get; set; }
[XMLIgnore]
public virtual IList<AttributeGroup> AttributeGroups {
get { return this.AttributeGroupsList; }
}
public virtual List<AttributeGroup> AttributeGroupsList { get; private set;}
}
[可序列化]
公共类原型
{
公共虚拟长Id{get;private set;}
公共虚拟字符串名称{get;set;}
[XMLIgnore]
公共虚拟图书馆
关于,它是如何尝试强制转换到列表“1”的?在这些示例中,这不会出现在任何地方。您可以添加序列化XML的内容吗?这可能会有帮助。它是如何尝试强制转换到列表“1”的。这不会出现在这些示例中的任何地方。您可以添加序列化XML的内容吗?可能会有帮助。poss可复制的