У меня есть следующий Generic класс, который принимает тип Т и должен реализовывать IEnumerable:ExpressionTree и IEnumerable реализация
public class ConfigurationHelper<T>: IEnumerable<object[]> where T: BaseTestConfiguration
{
public T _configuration;
public ConfigurationHelper(configuration)
{
_configuration = configuration;
}
public IEnumerator<object[]> GetEnumerator()
{
ParameterExpression element = Expression.Parameter(typeof(T), "element");
//use reflection to check the property that's a generic list
foreach (PropertyInfo property in _configuration.GetType().GetGenericArguments()[0].GetProperties())
{
}
/* HERE IS MY ISSUE */
return _configuration.Select(x=>GET LIST<OTHERTYPE> PROPERTY)
.SelectMany(i => new object[] { AS MANY PROPERTIES AS OTHERTYPE })
.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Единственное, что я знаю от моего типа Т его, что есть только один тип недвижимости List<OtherType>
, и Я хотел бы вернуть IEnumerable<object[]>
с таким количеством элементов, как свойства в этом OtherType.
Я хотел бы использовать ExpressionTrees для этого, но я не знаю, как его создать.
Непонятно, чего вы пытаетесь достичь. Для его выражения используйте псевдокод. – abatishchev
В текущем коде вы будете запускать весь запрос LINQ каждый раз при запуске перечисления. – abatishchev
Привет, Можете ли вы дать мне некоторое определение BaseTestConfiguration? –