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; } }
现在我想制作一个像这样的列表/集合/容器,
PropertyContainer.Add(Temperature); //line1PropertyContainer.Add(HumIDity); //line2PropertyContainer.Add(IsRaining); //line3
我想这样做,以后我可能能够使用索引访问属性的当前值,像这样,
object currentTemperature = PropertyContainer[0];object currentHumIDity = PropertyContainer[1];object currentIsRaining = PropertyContainer[2];
但显然,这不会起作用,因为PropertyContainer [0]将返回旧值 – 温度在向容器添加温度时所具有的值(参见上面的line1).
有没有解决这个问题的方法?基本上我想统一访问属性的当前值;唯一可以改变的是索引.然而,索引也可以是字符串.
PS:我不想使用Reflection!
解决方法 好吧,你可以使用Lambdas:List<Func<object>> PropertyAccessors = new List<Func<object>>();PropertyAccessors.Add(() => this.Temperature);PropertyAccessors.Add(() => this.HumIDity);PropertyAccessors.Add(() => this.IsRaining);
那么你可以这样:
object currentTemperature = PropertyAccessors[0]();总结
以上是内存溢出为你收集整理的c# – 列出/属性引用的集合全部内容,希望文章能够帮你解决c# – 列出/属性引用的集合所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)