我有一张被另一个应用程序填满的表格。该表包含一个名为 的属性IsMailSent
。
Request
EF根据数据库数据构建我的 Type 对象。
该对象看起来像这样:
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
接收一个 CollectionRequest
并构建一个 Collection MailMessages
。目前我创建了一个类,它继承自MailMessage
并包含对相应请求对象的引用。背后的想法是MailService
(负责发送邮件)应该将IsMailSent
属性设置为true
.
所以
Send()
方法应该设置IsMailSent = true
但这是最好的方法吗?据我了解 SOLID 原则,MailService
不应该负责设置此属性(因为它负责发送邮件) - 还是我错了?