我处于需要使用反射对大量不同类别的DTO进行水合的情况,但是我想避免装箱和拆箱,这会损害性能。知道如何吗?
示例说明:
public class Person {
public int Age { get; set; }
}
var person = new Person();
var ageProp = typeof(Person).GetProperty("Age");
ageProp.SetValue(person , 13); // Causes boxing!!
编辑
这是一个更好的例子:
public void CreateAndHydrateEntity(Type entityType, List<(string PropName, int PropIndex) properties, SqlDataReader reader) {
var entity = Activator.CreateInstance(entityType);
foreach(var (propName, index) in properties) {
var prop = entityType.GetProperty(propName);
prop.SetValue(entity, reader[index]); // Causes boxing!!
}
}