Chào mọi người. Hiện tại em đang có vấn đề như này nhờ mọi người giải quyết giúp ạ.
– Yêu cầu chức năng:
+ Sau khi gửi mail sẽ update trạng thái là đã gửi request gửi mail.
+ Sau khi nhận thông báo gửi mail thành công từ webhook của server mail sẽ update trạng thái là gửi mail thành công và tiến hành gửi mail thông báo.
– Mong muốn:
+ Hiện tại em muốn chia thành 2 service là
・ Service gửi mail
・ Service update trạng thái mail
+ Code sẽ kiểu như thế này:
public class ServiceSendMail : IServiceSendMail { IServiceUpdateStatusMail _b; public ServiceSendMail(IServiceUpdateStatusMail b){ _b = b; } public void SendMail(){ _b.UpdateStatus(); } } public class ServiceUpdateStatusMail : IServiceUpdateStatusMail{ IServiceSendMail _a; public ServiceUpdateStatusMail(IServiceSendMail a){ _a = a; } public void UpdateStatus(){ _a.SendMail(); } }
– Vấn đề gặp phải:
Lỗi stackoverflow exception
– Cách làm tạm thời:
+ Gộp 2 service vào 1
Mọi người còn cách nào hay ho hơn không ạ. Chỉ giúp em với
Em xin cảm ơn trước ạ.
em có thể dùng mediator design pattern để giải quyết bài toán này nhé:
Cách này cũng khá giống với việc trong SendMailService không trực tiếp gọi UpdateStatusMailService mà thông qua IServiceProvider để gọi service UpdateStatusMailService.
Code sẽ kiểu như thế này ạ
Ừ, bản chất nó là mediator design pattern, có thằng còn tạo hẳn 1 thư viện cho C# đó: https://github.com/jbogard/MediatR