В настоящее время я работаю над написанием предложения динамического выбора с использованием лямбда-выражений и застрял на этапе, когда мне приходится иметь дело с вложенными коллекциями.
Например:
Код: Выделить всё
class A
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public IEnumerable Property3 { get; set; }
}
class B
{
public string Prop1 { get; set; }
public int Prop2 { get; set; }
}
У меня есть классы A и B, как показано выше, и я получаю коллекцию A, однако, поскольку эти данные внутри A будут привязаны к сетке, все свойства не требуются. Это похоже на зависимость от просмотра. Представление определяет поля для отображения. Поэтому я создаю объект «на лету» и добавляю к нему необходимые свойства. Это я сделал, используя лямбда-выражение, как показано ниже:
Код: Выделить всё
Expression.Bind(p, Expression.PropertyOrField(entityExpression, p.Name))
Это работает, если мне нужно выбрать только Property1 и Property2 из класса A, однако, если я хочу Property3, который является коллекцией, это не будет работать, поскольку я создаю тип на лету и просто добавляю необходимые ему свойства. Следовательно, во время выполнения у меня будет сценарий типа
Код: Выделить всё
IEnumerable => RuntimeType2 { string Prop1 {get;set; }
IEnumerable =>
RuntimeType1 { string Property1 {get;set;
IEnumerable Property3 {get;set;} }
Выше приведен сценарий, которого я хочу достичь. В простом случае я могу это сделать, однако изо всех сил пытаюсь привязаться к коллекции.
Надеюсь, у моей проблемы достаточно описания. Если вам нужна дополнительная информация, пожалуйста, ответьте. Любые указатели будут полезны.
Подробнее здесь:
https://stackoverflow.com/questions/149 ... -for-array