none
Problemas serializando tipos genericos IList RRS feed

  • Pregunta

  • Hola a todos.

    Tengo un problema con tipos genericos IList. Me explico sobre mi código.

    En un proyecto tengo un par de entidades, Person y Address, dentro de Person tengo una propiedad:

    [DataMember]
            public IList<Address> Addresses
            {
                get { return _addresses; }
                set { _addresses = new List<Address>(value); }
            }

    Ambas entidades están marcadas como DataContract y en Person he definido Address como KnownType. Dentro de ese mismo proyecto, tengo una clase PersonManager, que tiene un método para añadir una nueva Address. Dicho método hace un simle:

    _addresses.Add(address);

    Tengo otro proyecto de tipo Aplicación WCF, donde expongo como servicio otro método para añadir una Address que simplemente llama al método superior. Luego he creado un proyecto Console y añadido la referencia al servicio, usando el asistente, marco las opciones para que utilice Generic.List para las colecciones, y que reuse los tipos de las DLLs referenciadas (en este proyecto he añadido una referencia al proyecto de las entidades, para que no cree esas entidades en el proxy).

    Cuando lo pruebo desde la app Console, he intento añadir una nueva Address, me falla en el Add del List<Address> y me dice que la colección tiene un tamaño fijo. Por lo que veo, lo que le llega el servicio es un Array de Address, y no un IList<Address>.

    Alguien sabe el motivo? algún ejemplo en la red donde se haga algo parecido?

    Muchas gracias por la ayuda!!
    Luis.

     

    domingo, 12 de diciembre de 2010 18:05

Todas las respuestas

  • ¿cual es tu framework target?

    Si usas 2 o 3, IList no implementa el método ADD (http://msdn.microsoft.com/es-es/library/s16t9z9d%28v=VS.85%29.aspx), tienes que apuntar a 3.5 o superior.

     

    domingo, 12 de diciembre de 2010 18:59
  • Hola Fermin,

    Estoy con el 4.0.

    He encontrado este post: http://www.nichesoftware.co.nz/blog/201005/wcf-and-ilistt que le pasa lo mismo q a mi, y que lo ha "solucionado" con un workarround, que a mi me ha funcionado a medias. Ya no me da el error en el Add, pero me falla cuando el objeto Person al que acabo de añadir el Address, lo intento devolver al cliente desde el servicio. Es un error de comunicación, que no consigo solventar, ya que la excepcion no dice nada concreto.

    En cualquier caso, aunque funcione me parece raro que haya que hacer algo así para que se pueda serializar el IList.

    Muchas gracias!!

    domingo, 12 de diciembre de 2010 19:16
  • De nada. Estas cosas me hacen querer decicarme a la cria de cabras.xD

     

    domingo, 12 de diciembre de 2010 19:45