У меня следующая проблема. Я должен перебрать все свойства класса, чтобы настроить какой-то строитель. У класса много свойств, поэтому код громоздок. Это выглядит так:
var b = builder<MyTypeWith1000Properties>
.WithProperty(x=>x.Property1)
.WithProperty(x=>x.Property2)
...
.WithProperty(x=>x.Property1000);
Код повторяется во многих местах для разных типов, а не только для MyTypeWith1000Properties. Я думал о создании какого-то расширения, например:
var b = builder<MyTypeWith1000Properties>
.WithAllProperties();
, а затем в WithAllProperties я мог бы перебирать свойства типа, используя Reflection, например:
public static IDataExtractor<T> WithAllProperties(this IDataExtractor<T> extractor)
{
var properties = typeof(T).GetProperties();
foreach (var property in properties)
{
extractor = extractor.WithProperty(/*the problem is here/*);
}
return extractor;
}
Как преобразовать переменную свойства в цикле в соответствующее выражение
Expression<Func<TRow, TValue>> propertyExpression
как это то, что ожидает WithProperty