【发布时间】:2011-04-18 09:28:29
【问题描述】:
我有一个使用一些配置设置的扩展方法。我已将这些声明为static。
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
我只是想检查一下这是否符合我的意图,因为我不能 100% 确定。我的想法是我不想继续阅读这些值,我希望它们被读取一次并在 Web 应用程序的生命周期内缓存。这是会发生什么吗?谢谢
【问题讨论】:
-
我不会从扩展方法中的配置中读取。您的扩展方法应该适用于所有 IOrder,但您仅适用于配置正确的应用中的 IOrder。
-
嗯,我想不出还有什么办法。通知服务实际上并不是域模型的一部分,即发送电子邮件不应该是 IOrder 的责任(它基本上只保存订单数据)。因此,当我想发送订单状态更改通知时,我编写了从控制器调用的扩展。你觉得这样的有道理吗?还是有更好的办法?
-
发送电子邮件通常是企业中的一个横切关注点。我会创建一个服务,其唯一目的是发送电子邮件。您可以为您发送的特定电子邮件设置特定方法,但我肯定会隔离您应用程序的电子邮件发送部分。