public class Product
{
public string Title;
public string Description;
public string Copy;
}
public void setCopyProperty(List<product> products, string propertyName)
{
foreach(var product in products)
{
var propertyValue = //refection
product.Copy = propertyValue;
}
}
我正在迭代一个产品列表,并尝试使用必须动态获取的属性值设置Copy属性。有没有一种方法可以避免每次迭代的反射?
我想我理解这个问题。。
对于我希望能够以非反射的方式枚举类属性的情况,我将数据存储在字典中:
public class X{
private Dictionary<string, object> _values = new Dictionary<string, object>();
public string Y {
get{ return (string)_values[nameof(Y)]; }
set{ _values[nameof(Y)] = value; }
}
public int Z {
get{ return (int)_values[nameof(Z)]; }
set{ _values[nameof(Z)] = value; }
}
}
字典可以枚举,关键是属性名称等。如果有特殊的性能考虑,例如你不想在数百万次get中使用字典哈希/强制转换,并且有不频繁的集合,你可以使用普通的支持变量和字典;同时更新它们,但只获取变量
public class X{
private Dictionary<string, object> _values = new Dictionary<string, object>();
private string _y;
public string Y {
get{ return _y; }
set{ _values[nameof(Y)] = _y = value; }
}
private int _z;
public int Z {
get{ return _z; }
set{ _values[nameof(Z)] = _z = value; }
}
}