我有一张被另一个应用程序填满的表格。该表包含一个名为 的属性IsMailSent。
RequestEF根据数据库数据构建我的 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不应该负责设置此属性(因为它负责发送邮件) - 还是我错了?