WCF: serializando e desserializando coleções genéricas

Eu tenho uma equipe de classe que possui uma lista genérica:

[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());
    }

Quando uso essa classe em um serviço WCF, recebo a seguinte saída de log

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[]

Após a desserializaçãomembers é uma matriz e não é mais uma lista genérica, embora o tipo de campo seja IList <> (?!) Quando tento enviar esse objeto de volta pelo serviço WCF, recebo a saída do log

OnSerializing of Team called
XXX.Person[]

Depois disso, meu teste de unidade falha com uma System.ExecutionEngineException, o que significa que o serviço WCF não pode serializar a matriz. (talvez porque esperasse um IList <>)

Então, minha pergunta é: alguém sabe por que o tipo do meu IList <> é uma matriz após a desserialização e por que não consigo mais serializar meu objeto Team depois disso?

obrigado

questionAnswers(4)

yourAnswerToTheQuestion