2010-11-05 6 views
4

Lorsque j'essaie de sérialiser cette collection, la propriété name n'est pas sérialisée.Objet de sérialisation qui hérite de la liste <T>

public class BCollection<T> : List<T> where T : B_Button 
{  
    public string Name { get; set; } 
} 


BCollection<BB_Button> bc = new BCollection<B_Button>(); 

bc.Name = "Name";// Not Serialized! 

bc.Add(new BB_Button { ID = "id1", Text = "sometext" }); 

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
string json = serializer.Serialize(bc); 

Seulement si je crée une nouvelle classe (sans List<t> héritage), et y définir la propriété et la chaîne NameList<B_Button> bc = new List<B_Button>(); propriété j'obtenir le bon résultat.

Répondre

6

Dans de nombreux serializers (et de liaison de données, en fait), un objet est soit une entité ou (exclusive) une liste; ayant des propriétés sur une liste n'est pas communément prise en charge. Je factoriser à encapsulent la liste:

public class Foo<T> { 
    public string Name {get;set;} 
    private readonly List<T> items = new List<T>(); 
    public List<T> Items { get { return items; } } 
} 

aussi; Comment envisagez-vous de représenter cela dans JSON? IIRC la syntaxe de tableau JSON ne permet pas pour les propriétés supplémentaires soit.

+0

Je l'utilise simplement pour transmettre des données au client (scriptcontrol) où je le désérialise et récupère les données. – jullin