Я пытаюсь использовать XMLSerializer с замком активного звукозаписывающего классом, который выглядит следующим образом:Как использовать XMLSerializer с Castle ActiveRecord, содержащим IList <T> члена
[ActiveRecord("Model")]
public class DataModel : ActiveRecordBase
{
private IList<Document> documents;
[XmlArray("Documents")]
public virtual IList<Document> Documents
{
get { return documents; }
set
{
documents = value;
}
}
}
Однако XMLSerializer сталкивается с трудностями, потому что интерфейса IList. (Поднимает исключение: Не может сериализовать УЧАСТНИК DataModel.Documents 'типа «System.Collections.Generic.IList`1 ....)
Я читал в другом месте, что это ограничение в XMLSerializer и рекомендуемом обходной путь - объявить его как интерфейс List<T>
.
Поэтому я попытался изменить IList<Document>
на List<Document>
. Это вызывает активацию ActiveRecord: Тип свойства DataModel.Documents должен быть интерфейсом (IList, ISet, IDictionary или их общие счетные части). Вы не можете использовать ArrayList или List как тип свойства.
Итак, вопрос в следующем: как вы используете XMLSerializer с замком ActiveRecord, содержащим член IList?
Спасибо, это работает. Интерфейс становится немного загрязненным из-за дополнительного свойства, но я действительно не вижу большого выбора, если Microsoft не сделает что-то о проблеме сериализации IList. –
2009-04-16 16:39:12
Я читал, что это не ошибка, а функция, и способ обойти ее - использовать объекты передачи данных (или DTO). – Vamos