В целях имитации / тестирования мне бы хотелось иметь метод, который я могу передать в коллекцию объектов какого-либо типа, Func для выбора свойства для обновления и значение, которое я хотел бы установить для каждого свойства.к.Я хочу сделать это без использования отражения.Я также мог бы сделать это методом расширения и обернуть его для насмешки, но это после того, как это будет решено.
Вот пример обновления свойства Bar
для каждого в List<Foo>
:
public class Foo
{
public string Bar { get; set; }
}
// I want something like this
public List<Foo> UpdateProp_Ideal<TProperty>(List<Foo> foos, Func<Foo, TProperty> propertyFunc, TProperty valueToSet)
{
return foos.Select(x => { propertyFunc(x)[Somehow get setter?] = valueToSet; return x; }).ToList();
}
// I could do this, but it has a broader scope (and more typing)
public List<Foo> UpdateProp(List<Foo> foos, Func<Foo, Foo> updateFunc)
{
return foos.Select(updateFunc).ToList();
}
// Ideal call
var updatedFoos = UpdateProp_Ideal(listOfFoos, x => x.Bar, "Updated!");
// Working call
var updatedFoos = UpdateProp(listOfFoos, x => { x.Bar = "Updated!"; return x; });