汎用パラメーターを使用して func を BackgroundWorker に渡したいのですが、反対側で func をキャストして実行する方法につまずきました。
次のコードは、私がやろうとしていることを示しています。Execute
すべてのメソッドにBackgroundExecutionContext
との 2 つの制約があることに注意してBackgroundExecutionResult
ください。また、1 つ以上のジェネリック パラメーターを使用できるようにする必要があります。
public static class BackgroundExecutionProvider
{
public static void Execute<TValue, TResult>(Func<TValue, TResult> fc)
where TValue: BackgroundExecutionContext
where TResult: BackgroundExecutionResult
{
var bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(Worker_DoWork);
bw.RunWorkerAsync(fc);
}
public static void Execute<TValue, T1, TResult>(Func<TValue, T1, TResult> fc)
where TValue : BackgroundExecutionContext
where TResult : BackgroundExecutionResult
{
var bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(Worker_DoWork);
bw.RunWorkerAsync(fc);
}
public static void Execute<TValue, T1, T2, TResult>(Func<TValue, T1, T2, TResult> fc)
where TValue : BackgroundExecutionContext
where TResult : BackgroundExecutionResult
{
var bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(Worker_DoWork);
bw.RunWorkerAsync(fc);
}
private static void Worker_DoWork(object sender, DoWorkEventArgs e)
{
// How do I cast the EventArgs and run the method in here?
}
}
これを達成する方法、または別のアプローチで提案できますか?