Есть ли способ динамически спроецировать кучу селекторных выражений на новый анонимный тип, который может использоваться, например, .Select() или объединенные элементы доступа?Создать анонимный тип с помощью выражений-переключателей
Скажем, у меня есть класс с 3-мя свойствами
public class DummyClass {
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
Для того, чтобы получить доступ к одному из них, используя аксессор член, я могу написать что-то вроде этого:
public class DummyClass...
// x => x.Id
public static Expression<Func<DummyClass, int>> IdAccessor = f => Id;
То же самое для Name
или Category
участник. Теперь я хотел бы вернуть как Id
, так и Name
в качестве анонимного типа с использованием обоих селекторов.
// combined x => x.Id and x => x.Name into x => new { x.Id, x.Name }
return new { IdAccessor, NameAccessor }
Однако я застрял делать это динамически, как я не в состоянии создать анонимный тип, используя, например, Expression.New()
, не зная его фактического типа.
EDIT
я переписал вопрос с другим примером, который должен прояснить некоторые другой.
Уход за разработкой? Создание 'ExpandoObject' с помощью' Expression.New() '? – xvdiff
В чем заключен ваш оператор 'return new ...'? Что вы пытаетесь вернуть? Селектор? Или фактический объект анонимного типа? В любом случае, как вы ожидаете решения проблемы, что анонимные типы в основном бесполезны вне метода, в котором они объявлены? Этот вопрос крайне неясен, не в последнюю очередь из-за отсутствия хорошего примера кода, который адекватно иллюстрирует то, о чём вы говорите. –