Метод создания LCG для установки подмножества всех свойств в классе (замена отражения; С#)

Сценарий: у меня есть этот класс

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

Пользователь может выбрать только, например, FirstName и Age.

В настоящее время я использую отражение, но мне сказали, что отражение, среди прочего, снижает производительность.

public static class Helper<T>GetObject(List<string> fieldsToSet, Dictionary<string, string> values)
{
    var returnObject = new T();

    foreach (string field in fieldsToSet)
    {
        var property = returnObject.GetType().GetProperty(field);
        property.SetValue(returnObject, values[field], null);
    }        

    return returnObject;
}

Может ли кто-нибудь показать мне пример того, как это сделать (установив только подмножество всех полей в классе) с помощью облегченной генерации кода?


person Gustavo    schedule 04.04.2014    source источник
comment
Выражения @usr LINQ также медленные, но они намного элегантнее, можно также использовать что-то вроде github.com/AutoMapper /Автосопоставление.   -  person aybe    schedule 04.04.2014
comment
@Возможно, нужно создать выражение один раз, скомпилировать его и сохранить делегат в скомпилированном коде.   -  person usr    schedule 04.04.2014
comment
@usr Спасибо за совет, я попробую в своем приложении.   -  person aybe    schedule 04.04.2014