none
¿Cómo setear valores en una propiedad que es un array y es del tipo object? RRS feed

  • Pregunta

  • Hola...

    Estoy desarrollando una aplicación donde debo serializar una clase en un Json, en esta clase existe una propiedad que es un arreglo y el tipo es object, fíjense este es la clase donde se encuentra el atributo itemsField y la propiedad Items.

    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.w3.org/2000/09/xmldsig#")]
    [System.Xml.Serialization.XmlRootAttribute("Transform", Namespace="http://www.w3.org/2000/09/xmldsig#", IsNullable=false)]
    public partial class TransformType {
    
        private object[] itemsField;
    
        private string[] textField;
    
        private string algorithmField;
    
        /// <comentarios/>
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        [System.Xml.Serialization.XmlElementAttribute("XPath", typeof(string))]
        public object[] Items {
            get {
                return this.itemsField;
            }
            set {
                this.itemsField = value;
            }
        }
    
        /// <comentarios/>
        [System.Xml.Serialization.XmlTextAttribute()]
        public string[] Text {
            get {
                return this.textField;
            }
            set {
                this.textField = value;
            }
        }
    
        /// <comentarios/>
        [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
        public string Algorithm {
            get {
                return this.algorithmField;
            }
            set {
                this.algorithmField = value;
            }
        }
    }

    luego escribo esto para asignar un valor pero me dice ERROR NO SE PUEDE INICIALIZAR EL TIPO OBJECT, ITEMS NO EXISTE EN EL CONTEXTO ACTUAL... ¿Que estoy haciendo mal?

    Items = new object[1]
          {
           new object
                {
                  Items[1]="",
                }
          }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    lunes, 11 de septiembre de 2017 13:07

Respuestas

  • De esta manera funciono

     Transforms = new TransformType [1]
           {
             new TransformType
                 {
              Items = new string[1] {Valor a Asignar},
    	  Text = new string [1]  { Valor a Asignar },
    	  Algorithm=Valor a Asignar                                    
                  }
           }



    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    lunes, 11 de septiembre de 2017 23:22

Todas las respuestas

  • hola

    es que justamente un tipo object no esta bueno para serializar, si vas a definir una cadena con texto porque no defines la propiedad como string

    o sino defines una clase que defina un tipo concreto, no uses object

    aems no necesitas las variables privadas

    public partial class TransformType {
    
        [System.Xml.Serialization.XmlAnyElementAttribute()]
        [System.Xml.Serialization.XmlElementAttribute("XPath", typeof(string))]
        public string[] Items {get; set;}
    
        [System.Xml.Serialization.XmlTextAttribute()]
        public string[] Text {get; set;}
    
        [System.Xml.Serialization.XmlAttributeAttribute(DataType="anyURI")]
        public string Algorithm {get; set;}
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Willams Morales lunes, 11 de septiembre de 2017 18:16
    lunes, 11 de septiembre de 2017 18:07
  • Hola Leandro...

    Leandro Tuttini escribio :

    sino defines una clase que defina un tipo concreto, no uses object

    ademas no necesitas las variables privadas

    Lo que pasa es que esa clase es construida con XSD.EXE apartir de un esquema del proveedor de servicios


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    lunes, 11 de septiembre de 2017 20:14
  • De esta manera funciono

     Transforms = new TransformType [1]
           {
             new TransformType
                 {
              Items = new string[1] {Valor a Asignar},
    	  Text = new string [1]  { Valor a Asignar },
    	  Algorithm=Valor a Asignar                                    
                  }
           }



    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    lunes, 11 de septiembre de 2017 23:22
  • ok, de esa forma funciona porque lo defines como string, pero dejaste de usar object

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 12 de septiembre de 2017 0:09