是否可以使用autofac xml配置配置同一接口的多個實現?Autofac多實現xml配置
我想完成的是一個windows服務,它執行多個工作。我有2個通過短信或電子郵件從隊列發送消息的作業。每一份工作都是不同的程序集。它們都依賴於IQueuedMessageProvider。一個作業需要的電子郵件執行另外一個短信implementation.The構造爲兩個作業看起來就像這樣(簡化問題):
public SendSmsJob(IQueuedMessageProvider queuedMessageProvider)
{
_queuedMessageProvider= queuedMessageProvider;
}
public SendEmailJob(IQueuedMessageProvider queuedMessageProvider)
{
_queuedMessageProvider= queuedMessageProvider;
}
在App.config我註冊的實現比如
<component type="MyApp.Plugin.Sms.Verizon.VerizonSmsService, MyApp.Plugin.Sms.Verizon" service="MyApp.Model.Messages.QueuedMessages.Providers.IQueuedMessageProvider, MyApp.Model" />
<component type="MyApp.Plugin.Email.Smtp.EmailService, MyApp.Plugin.Email" service="MyApp.Model.Messages.QueuedMessages.Providers.IQueuedMessageProvider, MyApp.Model" />
如何確保工作得到IQueuedMessageProvider的正確實施?我已閱讀有關解決這些與名稱和鍵https://code.google.com/p/autofac/wiki/TypedNamedAndKeyedServices的問題。
另一個選項是註冊所有實現並使IQueuedMessageProvider成爲IEnumerable並在構造函數中採用正確的實現。但我更願意在自己的配置中解決它。它甚至有可能,或者你有什麼更好的解決這個問題的建議?
我認爲你對重新設計接口是正確的。我沒有任何意義,電子郵件作業開始發送短信。雖然它在技術上很好,但它永遠不會發生。感謝您指出我的設計錯誤。 – Mark