Zobacz poniższy przykład klasy statycznej.Najlepszy sposób na refactor tej klasy statycznej w języku 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();
}
}
}
Jak widać, mam trzy metody. MethodA
, MethodB
i MethodC
które odpowiadają trzy różne interfejsy IServiceA
, IServiceB
, a IServiceC
Powodem Robię to dlatego używam Hangfire.io z ram aspnetboilerplate aw Hangfire, zadanie w tle nie ma HttpContext od normalnej iniekcji Dependency. Stworzenie klasy statycznej, która owija moje połączenia tam, gdzie ręcznie, wydaje się ominąć to.
Wykorzystanie wygląda następująco:
BackgroundJob.Enqueue(() => BackgroundTaskExecuter.MethodA());
Na razie mam tylko jeden lub dwa w tle zadania w mojej aplikacji sieci web, ale niewykluczone może mam dużo więcej w przyszłości, podczas gdy obecnie jest to w utrzymaniu, to w końcu będzie brzydko, jeśli utrzymam takie podejście.
Czy jest lepszy sposób to zrobić/refactor to? Może wzór fabryczny czy coś podobnego?
Dzięki.
@RuneFS przykład/hipotetyczny/kod MCVE jest nie na temat w [codereview.se]. Zobacz [Przewodnik po Code Review dla użytkowników SO] (http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users). –
Twierdzę, że to pytanie rzeczywiście jest zgodne z zakresem zdefiniowanym w Centrum pomocy. –