Мне не очень повезло в поисках этого ответа, так как я думаю, что не знаю достаточно о правильных терминах для него.
(Изменить для ясности кода и как я его называю)
У меня есть класс, который создает метод расширения:
public static class Foo
{
public static IList<T> Bar<T>(this DataTable table) where T : class, new()
{
IList<T> list = ... // do something with DataTable.
return list;
}
}
Я называю этот метод так:
DataTable table = SomehowGetTable();
IList<MyObject> list = table.Bar<MyObject>();
Опять же, значительно упрощено.
Теперь я хотел бы добавить делегата (?), Чтобы после получения списка я мог вызывать метод для каждого T в списке, например:
public static class Foo
{
public static IList<T> Bar<T>(this DataTable table, MyDelegate postProcess)
{
IList<T> list = ... // do something with DataTable.
foreach(T item in list)
{
t.postProcess();
}
return list;
}
}
Я не знаю, что мне нужно для передачи в postProcess ... делегат, предикат или действие, главным образом потому, что я по-прежнему вызываю Линка.
Или, может быть, это даже невозможно?