下記の静的クラスを参照してください。C#でこの静的クラスをリファクタリングする最良の方法は?
public static class BackgroundTaskExecuter
{
public static void MethodA()
{
using (var service = IocManager.Instance.ResolveAsDisposable<IServiceA>())
{
service.Object.MethodA();
}
}
public static void MethodB()
{
using (var service = IocManager.Instance.ResolveAsDisposable<IServiceB>())
{
service.Object.MethodB();
}
}
public static void MethodC()
{
using (var service = IocManager.Instance.ResolveAsDisposable<IServiceC>())
{
service.Object.MethodC();
}
}
}
ご覧のとおり、3つの方法があります。 MethodA
、MethodB
、3つの異なるインタフェースIServiceA
に対応MethodC
、IServiceB
、と私はaspnetboilerplateフレームワークとし、HangfireにHangfire.ioを使用していますので、私はこれをやっているIServiceC
理由は、バックグラウンドタスクは、のHttpContextを持っていません通常の依存性注入から。私が手動で解決したところで私の呼び出しをラップする静的なクラスを作成することは、これを回避するようです。
使い方は次のようになります。
BackgroundJob.Enqueue(() => BackgroundTaskExecuter.MethodA());
今のところ、私は私のウェブアプリで1つのまたは2つの背景のタスクを持っていますが、多分私は将来的にはより多くを有していてもよく、それは今、保守だが、それを私がこのアプローチをとっていれば、最終的に醜いだろう。
これを行うより良い方法はありますか/リファクタリングするのですか?おそらくそのような工場のパターンか何か?
ありがとうございました。
@RuneFS example/hypothetical/MCVEコードは、[codereview.se]でオフトピックです。 [SOユーザーのためのコードレビューガイド](http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users)を参照してください。 –
私はこの質問が実際にヘルプセンターで定義された範囲に従っていると主張します。 –