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)
);
Другие вопросы по тегам