【发布时间】:2011-10-31 09:46:47
【问题描述】:
假设我有以下类布局,它定义了公司和产品之间的一对多关系:
public class Company
{
public string Name { get; set; }
public string Address { get; set; }
}
public class Product
{
public Company Manufacturer { get; set; }
public string Name { get; set; }
}
我想将其序列化为 XML,但不幸的是,Product 中的 Company 实例将被复制。当我重新序列化文档时,重复的信息将被重新序列化为两个不同的实例。
由于文档后面会引用公司和产品,因此无法颠倒这种关系。我需要的是某种生成文件的方法,如下所示:
<rootElement>
<companies>
<company>
<id>1</id>
<name>Apple</name>
<address>1 Infinite Loop... etc</address>
</company>
<company>
<id>2</id>
<name>Microsoft</name>
<address>1 Microsoft Way... etc</address>
</company>
</companies>
<products>
<product>
<companyId>1</companyId>
<name>iPhone</name>
</product>
<product>
<companyId>1</companyId>
<name>iMac</name>
</product>
<product>
<companyId>2</companyId>
<name>XBox 360</name>
</product>
</products>
</rootElement>
我相信我可以破解某种专门的集合来自己重建这些引用,但我真的很想知道解决这个问题的“正确”方法是什么。微软不可能没有想到这一点,所以我必须在 .NET 中使用一些东西来解决这个问题,但我似乎无法想出正确的术语来搜索.
【问题讨论】:
-
谢谢,DataContractSerializer 看起来和我要找的完全一样。