Я пытаюсь создать свободный интерфейс к сетке данных Winforms. Это должно позволить мне использовать типизированный источник данных и легко использовать свойства свойств (Order.Custom.FullName)
Я добавляю столбцы при инициализации и пытаюсь установить свойство для использования там:
dgv.With<Order>().Column("Client Name").On(x => x.Client.FullName);
Исходный вопрос задается при настройке источника данных:
dgv.SetTypedDatasource<T>(IList<Order> orders)
Большая проблема здесь в том, что общие элементы управления невозможны (я полагаю), поэтому T не может быть указан для класса, но должен быть указан для метода ...
Я хочу создать список анонимных типов на основе заданного свойства в лямбда-выражении:
что-то вроде:
ProcessList<Client>(clientList, x => x.FullName);
Можно ли сделать что-то вроде этого:
[Редактировать] Обратите внимание, что на практике выражения будут заданы раньше и будут извлечены в другом месте ...
public void ProcessList<T>(IList<T> sourceList, Expression<Func<T, object>> expression)
{
var list =
(from T x
in sourceList
select new { expression })
.ToList();
// process list .... grid.DataSource = list;
}
Итак, я хотел бы создать анонимные типы на основе заданного выражения. Я знаю, что могу оценить это выражение, чтобы получить правильные свойства.
Я вроде застрял, возможно ли что-то подобное?
Есть идеи?