Циркулярная ссылка в XmlSerialize - PullRequest
0 голосов
/ 01 июня 2011

Я использую текстовый шаблон T4 для создания DOC POCO для использования в моей модели домена NHibernate.

Эти POCO должны отправляться клиенту с использованием веб-служб ASMX (для совместимости с Mono), но еслиЯ не XmlIgnore свойства List<>, я буду сталкиваться с круговой ссылкой.

Есть ли способ разрешить создание POCO так, чтобы круговая ссылка все еще существовала на стороне клиента, нопри передаче через веб-сервис ссылка игнорируется.

Может быть, пользовательская XmlSerializer?WCF недостаточно поддерживается в Mono для использования.

public partial class UserDTO
{

    public System.Guid ID
    {
        get;
        set;
    }

    public System.String Username
    {
        get;
        set;
    }

    public System.String Password
    {
        get;
        set;
    }
    [XmlIgnore]
    public List<InspectionDTO> Inspections
    {
        get;
        //internal set;
        set;
    }

    public ContactDTO Contact
    {
        get;
        set;
    }

    public OrganisationDTO Organisation
    {
        get;
        set;
    }
    [XmlIgnore]
    public List<RoleDTO> Roles
    {
        get;
        //internal set;
        set;
    }
}


public partial class ContactDTO
{

    public System.Guid ID
    {
        get;
        set;
    }

    public System.String FirstName
    {
        get;
        set;
    }

    public System.String LastName
    {
        get;
        set;
    }
    [XmlIgnore]
    public List<AddressDTO> Addresses
    {
        get;
        //internal set;
        set;
    }
    [XmlIgnore]
    public List<EmailDTO> Emails
    {
        get;
        //internal set;
        set;
    }
    [XmlIgnore]
    public List<UserDTO> Users
    {
        get;
        //internal set;
        set;
    }
    [XmlIgnore]
    public List<PhoneDTO> Phones
    {
        get;
        //internal set;
        set;
    }
}
...