我有一个表被其他应用程序填充。该表格包含一个名为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。当多个应用程序可以发送邮件(服务器驻留)时,应该有一个额外的表用于并发。 (像哪个应用程序正在处理什么项目) –