我有一個使用某些配置設置的擴展方法。我宣佈這些爲static
。.NET中靜態變量的生存期
public static class Extensions
{
static string _mailServer = ConfigurationManager.AppSettings["MailServer"];
// ... etc
public static void SendEmailConfirmation(this IOrder order) { }
}
我只是想檢查一下這是做什麼我打算,因爲我不是100%確定。我的想法是,我不希望繼續閱讀這些值,我希望它們被讀取一次並在Web應用程序的生命週期中緩存。這會發生什麼?由於
我不會從擴展方法的配置讀取。您的擴展方法應該適用於所有的IOrders,但您的擴展方法只適用於正確配置的應用程序中的IOrders。 – 2010-09-28 15:54:53
嗯,我想不出如何去做。通知服務不是域模型的真正組成部分,即發送電子郵件不應該是IOrder(基本上只包含訂單數據)的責任。所以我寫了一些擴展,當我想發送訂單狀態更改的通知時,我的控制器會調用這些擴展。你認爲這種說法有道理嗎?或者會有更好的方法? – fearofawhackplanet 2010-09-28 15:57:09
發送電子郵件通常是企業中的一個交叉問題。我會創建一個服務,其唯一目的是發送電子郵件。您可以針對您發送的特定電子郵件設定特定方法,但我絕對會將發送電子郵件的部分隔離開。 – 2010-09-28 16:02:43