autofac xml 구성을 사용하여 동일한 인터페이스의 여러 구현을 구성 할 수 있습니까?Autofac 여러 구현 xml 구성
내가 수행하려고하는 것은 여러 작업을 실행하는 Windows 서비스입니다. 나는 sms 또는 전자 우편에 의하여 줄에서 메시지를 보내고있는 2 개의 일이있다. 모든 직업은 다른 집회입니다. 둘 다 IQueuedMessageProvider에 의존합니다. 내가
<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" />
처럼 구현을 등록의 app.config에서
public SendSmsJob(IQueuedMessageProvider queuedMessageProvider)
{
_queuedMessageProvider= queuedMessageProvider;
}
public SendEmailJob(IQueuedMessageProvider queuedMessageProvider)
{
_queuedMessageProvider= queuedMessageProvider;
}
: 하나의 작업은 이메일 구현을 다른 (질문에 대한 간체) 모두 작업에 대한 SMS implementation.The 생성자는 다음과 같이 하나 필요
작업이 de IQueuedMessageProvider의 올바른 구현을 얻게하려면 어떻게해야합니까? 나는 이런 종류의 문제를 이름과 열쇠로 해결하는 것에 대해 읽었다. https://code.google.com/p/autofac/wiki/TypedNamedAndKeyedServices.
또 다른 옵션은 모든 구현을 등록하고 IQueuedMessageProvider를 IEnumerable로 만들고 생성자에서 올바른 구현을 수행하는 것입니다. 그러나 나는 자기 자신의 구성에서 그것을 해결하는 것을 선호한다. 이 문제를 해결할 수있는 좋은 방법이 있습니까?
저는 인터페이스를 다시 디자인하는 것이 맞다고 생각합니다. 나는 이메일 욥기가 SMS 메시지를 보내기 시작한다는 것을 알지 못한다. 그것은 기술적으로 잘 작동하지만 결코 일어나지 않을 것입니다. 내 디자인 실수를 지적 해 주셔서 감사합니다. – Mark