none
Acceder a una propiedad de un objeto dinamicamente RRS feed

  • Pregunta

  • Hola a todos, no se si el título es el adecuado pero no sabía explicarlo de otro modo... Me gustaría saber si alguien saber como acceder a una propiedad de modo dinámico, por ejemplo, si tengo una instancia de articulo:

    Articulo art = new Articulo();

    si yo quiero acceder a sus propiedades tengo que poner:

    art.Nombre o art.Precio

    hasta aquí nada nuevo. El caso es que en ocasiones me vendría muy bien poder hacer algo así:

    art."nombreDeLaPropiedad"

    es decir, acceder a su propiedad poniendo un string... de modo similar a acceder a una celda en un datatable...

    Sabeis como hacerlo?? gracias

    jueves, 15 de noviembre de 2012 18:30

Respuestas

Todas las respuestas

  • hasta aquí nada nuevo. El caso es que en ocasiones me vendría muy bien poder hacer algo así:

    solo podrias lograrlo si usas reflection

    Get Property Names using Reflection [C#]

    con reflection podrias buscar una propiedad de una clase y recuperar su valor

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 15 de noviembre de 2012 19:13
  • Si, pero con eso conseguirías el nombre pero no usarlo.

    Por ejemplo: En una tabla tengo guardadas las propiedades que quiero visualizar y las que no. De este modo, indico que de la tabla Usuarios las propiedades modificables con Nombre y Apellido

    Propiedad     Tabla            Modificable        

    Nombre        Usuario          True

    Apellido        Usuario          True

    DNI              Usuario          False

    Si ahora quiero modificar todos los Usuarios que tengo cargados en una datatable hago

    para cada usuarios del datatable repetir      <- Informacion sacada de la tabla Usuarios

        para cada propiedad que es modificable    <- Informacion sacada de la tabla que he dibujado anteriormente

                datatable["propiedadModificable"] = "Lo que sea"

        fin para

    fin para

    Sin embargo si esto mismo lo quiero hacer con objetos, no puedo, a no ser que haga if-s anidados.

    Espero haberme explicado...

    • Editado Peteiro jueves, 15 de noviembre de 2012 19:43 Error
    jueves, 15 de noviembre de 2012 19:38
  • pero con eso conseguirías el nombre pero no usarlo.

    como que no, con reflection tomarias el nombre de la propiedad y usarias el GetValue() pasandole la instancia para tomar el valor

    Get property value from string using reflection in C#

    estudia un poco el uso de reflection


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Peteiro jueves, 29 de noviembre de 2012 8:21
    jueves, 15 de noviembre de 2012 19:52