是否可以使用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