我有ASP .NET Web API应用程序。我的一位控制器使用EmailNotificationService
。该服务负责向其他用户发送电子邮件,并由Unity
注入到控制器中。电子邮件模板存储在数据库中。因此,我正在寻找一种立即获取此模板的方法。我不想在EmailNotificationService
构造函数中执行数据库请求。它应该负责创建对象而不是获取数据。这种情况的基本做法是什么?先感谢您。
答案 0 :(得分:1)
类似这样的东西:
public interface IEmailTemplateDataStore()
{
ICollection<MyTemplate> GetAllTemplates();
}
和
public EmailNotificationService : IEmailNotificationService
{
private readonly IEmailTemplateDataStore EmailTemplateDataStore;
public EmailNotificationService(IEmailTemplateDataStore ietds)
this.EmailTemplateDataStore = ietds;
}
private ICollection<MyTemplate> _templates;
private ICollection<MyTemplate> Templates
{
get
{
if (null == this._templates)
{
this._templates = this.EmailTemplateDataStore.GetAllTemplates(); /* if null, populate */
if (null == this._templates)
{
throw new NullReferenceException("EmailTemplateDataStore.GetAllTemplates returned null");
}
}
return this._templates;
}
}
public DoSomethingOne()
{
ICollection<MyTemplate> temps = this.Templates;
foreach (MyTemplate temp in temps)
{
}
}
public DoSomethingTwo()
{
ICollection<MyTemplate> temps = this.Templates;
foreach (MyTemplate temp in temps)
{
}
}
}