.net 如何使用c#将具有子对象列表的父对象转换为xml文件?
我有一个父表类和一个子表主题。我已经创建了这些类的对象,并将子对象作为列表添加到父类中。现在,我想使用linq读取父表数据,并使用xml序列化将其转换为xml文件 这是我的密码.net 如何使用c#将具有子对象列表的父对象转换为xml文件?,.net,c#-4.0,.net,C# 4.0,我有一个父表类和一个子表主题。我已经创建了这些类的对象,并将子对象作为列表添加到父类中。现在,我想使用linq读取父表数据,并使用xml序列化将其转换为xml文件 这是我的密码 ClassMaster cls = new ClassMaster();List<ClassMaster> clsList = cls.FindAll().Where(t => t.ClassSymbol == "I").ToList(); var serializer1 = new XmlS
ClassMaster cls = new ClassMaster();List<ClassMaster> clsList =
cls.FindAll().Where(t => t.ClassSymbol == "I").ToList();
var serializer1 = new XmlSerializer(cls.FindAll().GetType());
ClassMaster cls = new ClassMaster();
var stringwriter = new System.IO.StringWriter();
var serializer = new XmlSerializer(cls.GetType());
serializer.Serialize(stringwriter, cls);
ClassMaster cls=new ClassMaster();列表clsList=
其中(t=>t.ClassSymbol==“I”).ToList();
var serializer1=新的XmlSerializer(cls.FindAll().GetType());
ClassMaster cls=新的ClassMaster();
var stringwriter=new System.IO.stringwriter();
var serializer=新的XmlSerializer(cls.GetType());
serializer.Serialize(stringwriter,cls);
但它在第3行抛出了一个异常
“无法序列化成员'School.Objects.ClassMaster.classSubjectList'
类型
'System.Collections.Generic.IList`1[[School.Objects.ClassWiseSubject,
School.Objects,版本=1.0.0.0,文化=中性,
PublicKeyToken=null]'”
公共类主类:GenericRepository
{
公共虚拟整数ClassId{get;set;}
公共虚拟字符串类符号{get;set;}
公共虚拟字符串类名{get;set;}
公共虚拟IList类主题列表{get;set;}
}
公共类ClassWiseSubject:GenericRepository
{
公共虚拟整数Id{get;set;}
公共虚拟int ParentID{get;set;}
公共虚拟int SerialNo{get;set;}
公共虚拟字符串SubjectCode{get;set;}
}
HBM配置文件:
<class name="ClassMaster" table="tbl_ClassMaster">
<id name="ClassId" column="ClassId" type="int">
<generator class="identity"></generator>
</id>
<property name="ClassSymbol" column="ClassSymbol" type="string"/>
<property name="ClassName" column="ClassName" type="string"/>
<list name="classSubjectList" cascade="all" lazy ="false">
<key column="ParentID"/>
<index column="SerialNo"/>
<one-to-many class="ClassWiseSubject"/>
</list>
</class>
<class name="SubjectMaster" table="tbl_SubjectMaster">
<id name="SubjectId" column="SubjectId" type="int">
<generator class="identity"></generator>
</id>
<property name="SubjectCode" column="SubjectCode" type="string"/>
<property name="SubjectName" column="SubjectName" type="string"/>
</class>
谢谢
Surajit不支持IList接口。您有几个选择:
- 将类型从
更改为具体类别(例如IList
)李>List
- 使用
而不是DataContractSerializer
李>XmlSerializer
- 实现
李>IXmlSerializable
- 为
读写XmlSerializer
创建类型为classSubjectList
的伪属性,并使用List
属性标记[XmlIgnore]
classSubjectList
<class name="ClassMaster" table="tbl_ClassMaster">
<id name="ClassId" column="ClassId" type="int">
<generator class="identity"></generator>
</id>
<property name="ClassSymbol" column="ClassSymbol" type="string"/>
<property name="ClassName" column="ClassName" type="string"/>
<list name="classSubjectList" cascade="all" lazy ="false">
<key column="ParentID"/>
<index column="SerialNo"/>
<one-to-many class="ClassWiseSubject"/>
</list>
</class>
<class name="SubjectMaster" table="tbl_SubjectMaster">
<id name="SubjectId" column="SubjectId" type="int">
<generator class="identity"></generator>
</id>
<property name="SubjectCode" column="SubjectCode" type="string"/>
<property name="SubjectName" column="SubjectName" type="string"/>
</class>