C# Action<> с параметром Func<>
У меня есть следующий метод, который я не могу понять правильный синтаксис для вызова:
public T GetAndProcessDependants<C>(Func<object> aquire,
Action<IEnumerable<C>, Func<C, object>> dependencyAction) {}
Я пытаюсь назвать это так:
var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now,
(() => someList, (id) => { return DoSomething(x); }) }
Отредактировано: спасибо всем, вы, ребята, помогли включить лампочку в моей голове. вот что я сделал:
var obj = MyClass.GetAndProcessDependants<int>(
() => DateTime.Now,
(list, f) =>
{
list = someList;
f = id => { return DoSomething(id); };
});
не уверен, почему я даже проблема с этим. это один из тех дней, я думаю..
Спасибо
4 ответа
Просто глядя на описание выше, похоже, что вызов должен быть:
var obj = MyClass.GetAndProcessDependants<int>(() => DateTime.Now,
(seq, fun) => { /* do something with seq and fun */ });
Ключ, так как вы передаете Action
это занимает Func
вызывающий абонент (скорее всего) будет Func
в ваш Action
, Так что вы просто укажите, как это Func
применяется к переданной последовательности (если я правильно читаю прототип).
Прямо сейчас функция принимает только один аргумент, когда запрашивает два!
Вы должны принять аргумент списка, такой как (list, id) => {}
Ваш лямбда-синтаксис совершенно неверен.
Вам нужно создать одно лямбда-выражение с двумя параметрами:
(list, id) => DoSomething(...)
var obj = MyClass.GetAndProcessDependants<int>(
() => DateTime.Now,
(someList, id) => DoSomething(x)
);