La WCF: la Sérialisation et la Désérialisation générique collections

J'ai une classe de l'Équipe qui détient une liste générique:

[DataContract(Name = "TeamDTO", IsReference = true)]
public class Team
{
    [DataMember]
    private IList<Person> members = new List<Person>();

    public Team()
    {
        Init();
    }

    private void Init()
    {
        members = new List<Person>();
    }

    [System.Runtime.Serialization.OnDeserializing]
    protected void OnDeserializing(StreamingContext ctx)
    {
        Log("OnDeserializing of Team called");
        Init();
        if (members != null) Log(members.ToString());
    }

    [System.Runtime.Serialization.OnSerializing]
    private void OnSerializing(StreamingContext ctx)
    {
        Log("OnSerializing of Team called");
        if (members != null) Log(members.ToString());
    }

    [System.Runtime.Serialization.OnDeserialized]
    protected void OnDeserialized(StreamingContext ctx)
    {
        Log("OnDeserialized of Team called");
        if (members != null) Log(members.ToString());
    }

    [System.Runtime.Serialization.OnSerialized]
    private void OnSerialized(StreamingContext ctx)
    {
        Log("OnSerialized of Team called");
        Log(members.ToString());
    }

Quand j'ai utiliser cette classe dans un service WCF, je reçois suite à la sortie du journal

OnSerializing of Team called    
System.Collections.Generic.List 1[XXX.Person]

OnSerialized of Team called    
System.Collections.Generic.List 1[XXX.Person]

OnDeserializing of Team called    
System.Collections.Generic.List 1[XXX.Person]

OnDeserialized of Team called    
XXX.Person[]

Après la désérialisation members est un Tableau, et non plus une liste générique bien que le type de champ est IList<> (?!)
Lorsque j'essaie d'envoyer cet objet revenir sur le service WCF-je obtenir la sortie du journal

OnSerializing of Team called
XXX.Person[]

Après mon test de l'unité se bloque avec un Système.ExecutionEngineException, ce qui signifie que le service WCF est pas en mesure de sérialiser le tableau. (peut-être parce qu'il prévoyait une IList<>)

Donc, ma question est: Est-ce que quelqu'un sait pourquoi le type de mon IList<> est un tableau après la désérialisation et pourquoi je ne peux pas sérialiser mon Équipe d'objet plus longtemps après que?

Grâce

InformationsquelleAutor Fabiano | 2010-04-01