有没有一种更高性能的方法可以使用反射从循环内的propertyName中获取类的属性值


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; }
}
}

最新更新