#c# #web-services #mono #poco #circular-reference
#c# #веб-сервисы #mono #poco #циклическая ссылка
Вопрос:
Я использую текстовый шаблон T4 для генерации DTO POCOs для использования в моей модели домена NHibernate.
Эти POCO должны быть отправлены клиенту с использованием веб-служб ASMX (чтобы быть совместимыми с Mono), но если я не использую XmlIgnore
List<>
свойства, я столкнусь с циклической ссылкой.
Есть ли какой-либо способ разрешить создание POCOs, чтобы циклическая ссылка все еще существовала на стороне клиента, но при передаче через веб-службу ссылка игнорируется.
Может быть, пользовательский 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;
}
}
Комментарии:
1. Итак, скажите мне еще раз, почему вы должны использовать веб-службу ASMX?
2. Я настоятельно рекомендую вам взглянуть на OpenRasta как на (ИМХО) гораздо лучшую альтернативу решениям на основе asmx или WCF
3. Привет, Джон, мне не нужно использовать веб-службу ASMX. Поскольку я использую mono, мне указали либо на ServiceStack, либо на использование реализации Mono WCF, которая не является полной реализацией WCF.