Je suis en train d'utiliser le XMLSerializer avec un château classe record actif qui se présente comme suit:Comment utiliser XMLSerializer avec un château ActiveRecord contenant un IList <T> membre
[ActiveRecord("Model")]
public class DataModel : ActiveRecordBase
{
private IList<Document> documents;
[XmlArray("Documents")]
public virtual IList<Document> Documents
{
get { return documents; }
set
{
documents = value;
}
}
}
Cependant, le XMLSerializer est en difficulté parce que de l'interface IList. (Soulève exception: Ne peut pas sérialiser membres « DataModel.Documents » de type « System.Collections.Generic.IList`1 ....)
J'ai lu ailleurs que c'est une limitation dans le XMLSerializer et recommandé solution de contournement consiste à déclarer comme une interface List<T>
à la place. Par conséquent, j'ai essayé de changer le IList<Document>
en List<Document>
. ActiveRecord déclenche une exception: Type de propriété DataModel.Documents doit être une interface (IList, ISet, IDictionary ou leurs parties génériques). Vous ne pouvez pas utiliser ArrayList ou List comme type de propriété. Donc, la question est: Comment utiliser XMLSerializer avec un Castle ActiveRecord contenant un membre IList?
Merci, cela fonctionne. L'interface devient un peu polluée en raison de la propriété supplémentaire, mais je ne vois pas vraiment beaucoup de choix à moins que Microsoft ne fasse quelque chose à propos du problème de sérialisation IList. –
J'ai lu que ce n'est pas un bug, mais une fonctionnalité, et le moyen de contourner le problème est d'utiliser des objets de transfert de données (ou DTO). – Vamos