Considere estas propiedades,Lista/Recolección de referencias a las propiedades
double _temperature;
public double Temperature
{
get { return _temperature; }
set { _temperature = value; }
}
double _humidity;
public double Humidity
{
get { return _humidity; }
set { _humidity = value; }
}
bool _isRaining;
public bool IsRaining
{
get { return _isRaining; }
set { _isRaining = value; }
}
y ahora quiero hacer una lista/colección/contenedor de propiedades similares,
PropertyContainer.Add(Temperature); //Line1
PropertyContainer.Add(Humidity); //Line2
PropertyContainer.Add(IsRaining); //Line3
Quiero hacer esto de modo que más tarde pueda acceder al actual valores de propiedades usando el índice, algo como esto,
object currentTemperature = PropertyContainer[0];
object currentHumidity = PropertyContainer[1];
object currentIsRaining = PropertyContainer[2];
Pero, obviamente, esto no va a funcionar, ya que PropertyContainer[0]
devolverá el valor antiguo - el valor, que Temperature
tenían en el momento de la adición de Temperature
al contenedor (ver el Line1
arriba).
¿Hay alguna solución a este problema? Básicamente quiero acceder actual valores de las propiedades uniformemente; lo único que puede cambiar es el índice. El índice, sin embargo, también podría ser una cadena.
PD: ¡No quiero usar Reflection!
esta es una solución impresionante. después de publicar la pregunta, obtuve la misma solución de [otro tema] (http://stackoverflow.com/questions/1402803/c-passing-properties-by-reference). muchas gracias por la respuesta rápida con este truco increíble! – Nawaz
Puede marcarlo como respuesta si lo ayudó. :) – Botz3000
Oops, me olvidé de eso. En realidad, antes de que me pidiera que esperara 5 minutos, Dios sabe por qué. De todos modos, respuesta aceptada y +1 de mi parte. – Nawaz