in

BUG Framework 3.5 Serialización

Last post 07-24-2008 9:15 by gjaume. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 07-21-2008 18:43

    • gjaume
    • Top 25 Contributor
    • Joined on 03-07-2007
    • Posts 14
    • Points 274

    BUG Framework 3.5 Serialización

     Hola a todos!!

     Más abajo muestro el código que da lugar a un ERROR muy extraño. Como podréis ver al serializar el objeto Prueba el atributo itemsPerPage no se serializa. Si probamos a cambiar por ejemplo la primera letra de la propiedad por "atemsPerPage" veremos que sí se serializa correctamente. Si lo dejamos tal y como está y cambiamos la propiedad "itemsPerPageSpecified" por cualquier otra cosa veremos que también se serializa bien la propiedad "itemPerPage"... algo muy muy extraño.. no???

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace SerializationBug
    {
        /// <remarks/>
        [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
        [System.SerializableAttribute()]
        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.ComponentModel.DesignerCategoryAttribute("code")]
        [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.hotelbeds.com/schemas/2005/06/messages")]
        public class Prueba
        {
            private int pageNumberField;
            private int itemsPerPageField;
            private bool itemsPerPageFieldSpecified;

            /// <remarks/>
            [System.Xml.Serialization.XmlAttribute()]
            public int pageNumber
            {
                get
                {
                    return this.pageNumberField;
                }
                set
                {
                    this.pageNumberField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlAttribute()]
            public int itemsPerPage
            {
                get
                {
                    return this.itemsPerPageField;
                }
                set
                {
                    this.itemsPerPageField = value;
                }
            }

            /// <remarks/>
            [System.Xml.Serialization.XmlIgnore()]
            public bool itemsPerPageSpecified
            {
                get
                {
                    return this.itemsPerPageFieldSpecified;
                }
                set
                {
                    this.itemsPerPageFieldSpecified = value;
                }
            }
        }

        class Program
        {
            static void Main(string[] args)
            {
                Prueba pagData = new Prueba();
                pagData.pageNumber = 5;
                pagData.itemsPerPage = 20;

                System.Xml.Serialization.XmlSerializer paginationData = new System.Xml.Serialization.XmlSerializer(typeof(Prueba));
                System.Text.StringBuilder sbp = new System.Text.StringBuilder();
                System.IO.TextWriter twp = new System.IO.StringWriter(sbp);
                paginationData.Serialize(twp, pagData);
            }
        }
    }
     

    eConcept Consulting
    Internet Business Solutions
    http://econcept.es
    Filed under:
    • Post Points: 22
  • 07-22-2008 15:05 In reply to

    Re: BUG Framework 3.5 Serialización

    Hola,

    No es un bug, es el comportamiento por defecto.

    Cuando tu pones una propiedad "[nombrepropiedad]Specified" estás indicando que la serialización de [nombrepropriedad] sea condicional y que sólo se serialice en el caso de que se haya inicializado.

    Para que esto te funcione correctamente debes indicar cuándo itemsPerPage está inicializada asignando la propiedad itemsPerPageSpecified a true. O simplemente quitando itemsPerPageSpecified para que te lo serialice siempre. Lo más lógico es que lo hagas en el set de itemsPerPage, algo así como:

    public int itemsPerPage
    {
     get
     {
      return this.itemsPerPageField;
     }
     set
     {
      this.itemsPerPageField = value;
                    itemsPerPageSpecified = true;

            }
    }

    Jose Fco Bonnin
    -----------------------
    Coordinador Baleares on .NET
    www.josefcobonnin.com
    • Post Points: 22
  • 07-24-2008 9:15 In reply to

    • gjaume
    • Top 25 Contributor
    • Joined on 03-07-2007
    • Posts 14
    • Points 274

    Re: BUG Framework 3.5 Serialización

     Jose,

     Toda la razón! Muchas gracias por tu ayuda!

    eConcept Consulting
    Internet Business Solutions
    http://econcept.es
    • Post Points: 5
Page 1 of 1 (3 items)
Baleares on .NET®
Powered by Community Server (Commercial Edition), by Telligent Systems