Я пытаюсь создать свободный интерфейс для Winforms Datagrid. Это должно позволить мне использовать типизированный источник данных и легко использовать свойства свойств (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;
}
Итак, я хотел бы создать анонимные типы на основе данного выражения. Я знаю, что могу вычислить это выражение, чтобы получить правильные свойства.
Я немного застрял, возможно ли что-то подобное?
Любые идеи?