Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接口的XML序列化_C#_Xml_Nhibernate_Serialization - Fatal编程技术网

C# 接口的XML序列化

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

我有一个问题,我在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 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可复制的