none
MI CLASE PARA ASIGNAR VALORES POR DEFECTO NO FUNCIONA BIEN RRS feed

  • Pregunta

  • Mi clase es esta:

     public abstract class SharpUtil
        {
            protected SharpUtil()
            {


                    var propertyInfos = this.GetType().GetProperties();
                    foreach (var propertyInfo in propertyInfos)
                    {
                        var attributes = propertyInfo.GetCustomAttributes(typeof(DefaultValueAttribute), true);
                        if (attributes.Any())
                        {
                            var attribute = (DefaultValueAttribute)attributes[0];
                            propertyInfo.SetValue(this, attribute.Value, null);
                        }
                    }
                

            }
        }

    -------------- Para el siguiente caso funciona bien: Asigna los valores por defecto-----------------------------

    [DefaultValue(typeof(Decimal),"0")]
     public decimal Unidades { get; set; }

    -------para los siguientes caso, me muestra los campos en null, no se porque no les asigna el default value-----------

    [DefaultValue("SUELTA")]
    public string Embarque { get; set; }

    [DefaultValue(typeof(String),"Hola")]
    public string Saludo { get; set; }

    -----------------De antemano gracias por su ayuda--------------------------


    Joe Nuñez Yaguna

    viernes, 14 de marzo de 2014 20:48

Todas las respuestas

  • hola

    pero esta funcionalidad que describes donde o como la utilizas ?

    porque no veo que esa funcionalidad util reciba o envie ningun parametro

    ser aque la clase donde pones estas propiedades heredan de SharpUtil ?

    si pones un breakpoint puede evaluar que al recorrer las propiedades detecta el atributo, o sea ingresa al if (attributes.Any())?

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 15 de marzo de 2014 12:01
  • Lo que dices es exactamente lo que hago, las clases con propiedades [DefaultValue], todas heredan de la clase SharpUtil, y en el if (attributes.Any()), debe ingresar y asignar el valor por defecto que envio, para los caso que no sucede debe colocar "SUELTA" o el "Hola" respectivamente a cada variable de la clase a la cual le de valores ppor defecto

    Joe Nuñez Yaguna

    sábado, 15 de marzo de 2014 13:43
  • hola

    como defines el atributo DefaultValue ? en el atributo se asigna el SUELTA o Hola a la propiedad Value ?

    al if (attributes.Any()) ingresa o no ? si ingresa cuando se invoca al SetValue si pasas el mouse por sobre la propiedad Value del atributo tiene el valor que esperas debe asignar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 15 de marzo de 2014 18:49
  • hola leandro:

    todo funciona como debe ser, se asiga el valor por defecto "SUELTA" o "Hola" a la propiedad value del attribute DefaultValue.

    En el if ingresa y se invoca el set normalmente y el value es "SUELTA" o "Hola".

    lo que no me parece es q al final el valor de la variable de la clase es null y no el valor por defecto que le asigno

    Gracias de antemano,


    Joe Nuñez Yaguna


    • Editado Joe Nuñez sábado, 15 de marzo de 2014 19:37 mejora
    sábado, 15 de marzo de 2014 19:36