如何序列化生成的类?

我正在开发一个项目,我想通过Web服务从数据库发送一个实体。 我有这个作为我的数据合同。
[DataContract]
public class CreateAlumniRequest
{
    [DataMember]
    public List<Alum.Data.EmploymentHistory> lstEmploymentHistory;
}
但是,我一直收到这个错误。   类型   'Alum.Data.Base.EmploymentHistoryBase'   无法序列化。考虑标记   它与DataContractAttribute   属性,并标记其所有   你想用序列化的成员   DataMemberAttribute属性。如果   type是一个集合,考虑标记   它与   CollectionDataContractAttribute。 这告诉我,我可能需要转到EmploymentHistory类并将其标记为DataContract。 问题是EmploymentHistory是由内部ORM工具生成的 - 我无法真正对其进行任何更改。 是否可以在不在类中添加该属性的情况下序列化EmploymentHistory? 还有其他解决方案吗?我唯一能想到的就是在一个可序列化的类中重新创建EmploymentHistory并手动映射对象,这听起来像是很多重复。     
已邀请:
我不确定您尝试使用哪个序列化程序,但如果Alum.Data.EmploymentHistory无法序列化,因为它没有标记为可序列化或由于某些其他原因......应该能够右键单击它并且提取界面。使用重构菜单创建一个类来实现接口,并在成员上实现{get; set;}。然后,您可以使用automapper来映射数据。 听起来很多,但它实际上会很快......并且会避免所有的手动映射。即使您不使用automapper,也绝对值得一看。在很多情况下,您需要将数据从一个对象复制到另一个对象......“AssertConfigurationIsValid”可以轻松测试您的映射。如果您对数组或列表或任何类型的嵌套对象进行自动处理......非常酷......请查看它。     
如果您的代码生成器创建了部分类,则可以将缺少的属性添加到新的部分文件中。 如果没有,你可以尝试使用不同的开源序列化器,如SharpSerializer或protobuf-net。     

要回复问题请先登录注册