Я нахожусь в ситуации, когда мне нужно гидратировать большое количество 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!!
}
}
var person = new Person()
зачем вам рефлексия? - person mtkachenko   schedule 17.07.2019IAge
и тогда вы сможете обновлять через этот интерфейс, без всякого отражения/упаковки. - person Dmitry Bychenko   schedule 17.07.2019