我有一個表被其他應用程序填充。該表格包含一個名爲IsMailSent
的屬性。更改參數 - 誰負責?
EF根據數據庫數據構建了Request
類型的對象。
物體看起來是這樣的:
public class Request {
int SomeInt;
bool IsMailSent;
SomeObject SomeObject;
}
現在我想創建一個服務,這將加載所有的條目與IsMailSent == false
,併發送此郵件給接收者。
我目前的代碼工作如下: 一個名爲MailMessageService的類獲得了Start()
和Stop()
方法。該Start
方法是這樣的:
public void Start(int delay) {
tokenSource = new CancellationTokenSource();
T = new Task(() => {
MailService ms = new MailService(Res.ServerAddress, int.Parse(Res.ServerPort));
while (true) {
var messages = GetMailMessages(_context.Requests.Where(o => !o.IsMailSent));
ms.Send(messages);
Thread.Sleep(delay);
}
}, tokenSource.Token);
}
GetMailMessages
接收的Request
集合和建立的MailMessages
集合的方法。目前我創建了一個繼承自MailMessage
的類,並且包含對相應請求對象的引用。背後的想法是,MailService
(負責發送郵件)應將IsMailSent
屬性設置爲true
。
所以
Send()
方法應該設置IsMailSent = true
但是,這是做的最好方法是什麼?據我瞭解固體原則,MailService
不應該負責設置此屬性(因爲它負責發送郵件) - 或者我錯了嗎?
是IsMailSent屬性還是字段? –
我不是一個物業 - 直接設置它只是爲了輕鬆解決我的問題(希望不是基於意見的問題)。我不得不承認,那些責任問題是讓我保持清醒的那些...... – C4p741nZ
如果這是唯一的發送應用程序,它應該將其設置爲true。當多個應用程序可以發送郵件(服務器駐留)時,應該有一個額外的表用於併發。 (像哪個應用程序正在處理什麼項目) –