Извините за плохой титул я хочу сделать следующее в .NET 3.5.Вызов выражения лямбда напрямую? . (Ex Action.Invoke (() => {})
void Invoke(Action callback)
{
callback();
}
Но мне интересно, если есть какая-то уже построен кол-классы, которые уже имеют эту функцию, например, если я мог бы сделать следующее, я был бы рад (но я знаю, что я не могу):.
Action.Run(()=>{}}
Я знаю, что есть куча решений этой проблемы, например, писать собственный класс помощника или расширение. Но, как я уже сказал, мне интересно, можно ли обойтись без этого.
Для уточнения:
Я хочу, чтобы это решение, потому что у меня есть определение метода, как это:
private void HelloWorld(Action callback)
{
#if DOTNET4.0+ //This code won't be compiled for DOTNET3.5
Action.Run(async()=>{
await someTask;
callback();
});
#else //This code will be
callback();
#endif
}
Поэтому я не хотел использовать Task.Run (...) Это потому, что я хотел для минимизации количества кода, зависящего от .NET4.0 +. Если нет альтернативы Task.Run (...), тогда я пойду с ним.
Почему вы хотите добавить такой слой косвенности? Какое преимущество может быть «Action.Run (() => {Foo();})' имеет только «Foo()»? – spender
Потому что мне нужно сделать следующее 'Invoke (async() => {await ...})', так что для определения моего метода не требуется ключевое слово async (пожалуйста, не спрашивайте меня, почему (у меня есть причины) !;)). – Whyser
Итак 'Task.Run (async() => {await FooAsync();})' – spender