Esta es una pregunta teórica, ya tengo una solución a mi problema que me llevó por un camino diferente, pero creo que la pregunta aún es potencialmente interesante.¿Cómo puedo pasar una propiedad como delegado?
¿Puedo pasar las propiedades de los objetos como delegados de la misma manera que con los métodos? Por ejemplo:
Digamos que tengo un lector de datos cargado con datos, y el valor de cada campo debe pasar a las propiedades de diferentes tipos que se han comprobado para DBNull. Si el intento de conseguir un solo campo, podría escribir algo como:
if(!rdr["field1"].Equals(DBNull.Value)) myClass.Property1 = rdr["field1"];
Pero si tengo que decir 100 campos, que se convierte en difícil de manejar muy rápidamente. Hay un par de maneras en que una llamada para hacer esto puede tener un aspecto agradable:
myClass.Property = GetDefaultOrValue<string>(rdr["field1"]); //Which incidentally is the route I took
Lo que también puede tener un aspecto agradable como un método de extensión:
myClass.Property = rdr["field1"].GetDefaultOrValue<string>();
O:
SetPropertyFromDbValue<string>(myClass.Property1, rdr["field1"]); //Which is the one that I'm interested in on this theoretical level
En el En segunda instancia, la propiedad tendría que pasar como un delegado para establecerlo.
Así que la pregunta es en dos partes:
- Es esto posible?
- ¿Qué aspecto tendría?
[Como esto es sólo teórico, respuestas en VB o C# son igualmente aceptables para mí]
Editar: Hay algunas respuestas mancha aquí. Gracias a todos.
Me encanta la implicación de esto también. Gran respuesta. – BenAlabaster