Xem ví dụ này lớp tĩnh bên dưới.Cách tốt nhất để cấu trúc lại lớp tĩnh này trong 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();
}
}
}
Như bạn có thể thấy, tôi có ba phương pháp. MethodA
, MethodB
, và MethodC
tương ứng với ba giao diện khác nhau IServiceA
, IServiceB
và IServiceC
Lý do tôi đang làm điều này là bởi vì tôi đang sử dụng Hangfire.io với khuôn khổ aspnetboilerplate và trong Hangfire, một nhiệm vụ nền không có HttpContext từ Injection Dependency bình thường. Tạo một lớp tĩnh kết thúc cuộc gọi của tôi, nơi tôi giải quyết thủ công dường như để có được xung quanh này.
Cách sử dụng như sau:
BackgroundJob.Enqueue(() => BackgroundTaskExecuter.MethodA());
Còn bây giờ, tôi chỉ có một hoặc hai nền nhiệm vụ trong ứng dụng web của tôi, nhưng hình dung tôi có thể có nhiều hơn trong tương lai và trong khi nó duy trì bây giờ, nó cuối cùng sẽ xấu đi nếu tôi giữ cách tiếp cận này.
Có cách nào tốt hơn để làm điều này/refactor này? Một mô hình nhà máy hoặc bất cứ điều gì như thế có lẽ?
Cảm ơn.
@RuneFS ví dụ/mã giả thuyết/MCVE không có chủ đề trên [codereview.se]. Vui lòng xem [Hướng dẫn về Đánh giá mã cho người dùng SO] (http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users). –
Tôi cho rằng câu hỏi này thực sự tuân theo phạm vi được xác định trong trung tâm trợ giúp. –