Я нахожусь в процессе написания приложения WCF, которое будет использоваться приложением Silverlight. Я выполнил большую часть работы по проектированию и сейчас занимаюсь реализацией, которая заставила меня задать этот вопрос.
Вот пример чего-то, что существует в моем приложении:
[DataContract]
class Person
{
[DataMember]
private Towel mostRecentlyUsedTowel;
[DataMember]
private Gym gym; //the gym that this person attends
...
}
[DataContract]
class Gym
{
[DataMember]
private List<Towel> towels; //all the towels this gym owns
...
}
Вот что я получаю: в моем приложении mostRecentlyUsedTowel будет указывать на что-то в списке полотенец для спортзала человека. Некоторые из моих запросов будут сериализовать объект Person.
Достаточно ли умен DataContractSerializer, чтобы заметить, что его просят сериализовать один и тот же экземпляр объекта дважды? Если да, то как с этим справиться?
Если это просто приведет к сериализации одного и того же экземпляра дважды, как мне справиться с этим, чтобы я не отправлял ненужные данные по ссылке?