所以我有数千个通用类型 T 的对象,我想将它们转换为我得到的对象数组。所以我必须获取属性列表 T,并为每个属性将值设置为数组上的相应对象
for (int i = 0; reader.Read(); i++)
{
T tmp = (T)Activator.CreateInstance(typeof(T));
foreach (var prop in properties)
{
prop.SetValue(tmp, reader.GetValue(reader.GetOrdinal(prop.Name)), null);
}
}
reader 是一个 DataReader。我遇到的问题是prop.SetValue非常慢(消耗了总执行时间的 50%),我被告知要使用动态方法或表达式树,我尝试使用表达式树,但据我所知,我必须为我要设置的每个值生成一棵树,这不是很好。所以动态方法是另一种选择。理想情况下,我需要创建一个方法SetProp(object, propertyName, value),我可以一遍又一遍地重用它。