私の目標は、戻り値の型を持つ関数をExecuteメソッドに渡し、その結果をシリアル化して保存することです。以下は、私がやろうとしていることの大まかなアイデアです。明らかにコンパイルされませんが、うまくいけばアイデアが得られます。私も入れ子になったタスクを再帰的に扱うことができるはずです。思考?メソッドがタスクを返すかどうかを判断し、それがあればそれを待つことはできますか?
public static TResult Execute<TResult>(Func<TResult> method)
where TResult : class
{
var result = method();
if(result is Task)
{
var taskResult = await result;
StoreResult(taskResult);
}
else
{
StoreResult(result);
}
}
は、2つのオーバーロードを作成し、1 'のFunc <タスク>'となります他の 'Func '。 –
Lee