WCF - исключение сериализации из-за циркулярной ссылки - PullRequest
1 голос
/ 06 июня 2010

Я использую DataContract с preserveObjectReferences, установленным в false (по умолчанию).При каких обстоятельствах это вызовет циркулярную ссылку и вызовет исключение сериализации?

если да, не могли бы вы объяснить пример сценария?

Спасибо

Lijo

1 Ответ

0 голосов
/ 18 марта 2011

Да, безусловно, если вы отключите флаг, этот простой сценарий приведет к исключению сериализации:

public static class X
{
   public static A GlobA;
   public static B GlobB;

   static 
   {
     GlobA = new A();
     GlobB = new B();
     GlobA.someB = GlobB;
     GlobB.someA = GlobA;
   }
}

[DataContract]
public class A
{
    [DataMember]
    public B someB = X.GlobA;
}

[DataContract]
public class B
{
    [DataMember]
    public A someA;
}

Теперь попробуйте сериализовать экземпляр A ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...