ラムダ式を取り入れたExecute(..)メソッドの洗練された実装を探しています。私がしようとしていることは可能なのでしょうか?コンパイラが(アクションの形で)このようなラムダ式を渡すことができるようになるはずです。非同期アノテーションに基づくC#ラムダ式の実行
static void Main(string[] args)
{
// This should execute SomeOperation() synchronously
Execute(() => SomeOperation());
// This should begin execution of SomeOperationAsync(), but not wait (fire and forget)
Execute(() => SomeOperationAsync());
// This should await the execution of SomeOperationAsync() (execute synchronously)
Execute(async() => await SomeOperationAsync());
}
上記のExecuteメソッドはどのように実装しますか?
ありがとうございましたJon、私はAsyncStateMachineAttributeを使用して質問で概説されていることをどのように達成するかを知っていただければ幸いです。この特定のケースでは、私は別々の過負荷を避けようとしています...それは最悪のケースです。 –
@CraigSmitham: 'Delegate.Method'プロパティを使って' MethodInfo'を取得し、 'method.IsDefined(typeof(AsyncStateMachineAttribute)、false)'を使ってその存在を確認することができます。しかし、誰かが属性を適用するのを止めることは何もありません。 –
私はそれを確認したら、それを実行するにはどのようにFuncとして扱いますか?空の非同期ラムダからFunc を抽出することはできません。 –