저는 Autofac을 사용하고 있으며 인터페이스를 여러 번 구현하고 싶습니다. 현재 유형에 따라 의존성을 해결할 수 있도록 어떻게 Autofac을 구성 할 수 있습니까?동일한 인터페이스의 여러 구현을 사용하는 Autofac
더 구체적으로 말하자면 하나의 인터페이스와 여러 개의 구현이 함께 연결되어야합니다.
날 (가상 클래스)을 설명하자 :public interface IMessageHandler
{
void Handle(Message message);
}
public class LoggingMessageHandler : IMessageHandler
{
private IMessageHandler _messageHandler;
public LoggingMessageHandler(IMessageHandler messageHandler)
{
_messageHandler = messageHandler;
}
public void Handle(Message message)
{
// log something
_messageHandler.Handle(message);
}
}
public class DoSomethingMessageHandler : IMessageHandler
{
private IMessageHandler _messageHandler;
public DoSomethingMessageHandler (IMessageHandler messageHandler)
{
_messageHandler = messageHandler;
}
public void Handle(Message message)
{
// do something
_messageHandler.Handle(message);
}
}
체인의 하단에 다음 하나에 메시지를 전달하지 않는 IMessageHandler
수 있습니다.
나는 다음과 같은 체인합니다 :
TopLevelClass -> LoggingMessageHandler -> DoSomethingMessageHandler -> FinalHandler
이 어떻게 (LoggingMessageHandler
에
DoSomethingMessageHandler
(IMessageHandler
에 대한 의존도를 수행하기 위해) TopLevelClass
에
- 패스
LoggingMessageHandler
에 Autofac 말할 수를IMessageHandler
에 대한 의존성을 수행하기 위해) - 개 패스
LoggingMessageHandler
FinalHandler
에
가 그것도 가능 (IMessageHandler
에 대한 의존도를 충족하기 위해) (I은 implicit support for IEnumerable에 대해 읽고)? 아니면 그 사이에 여분의 수업을 사용해야합니까 (공장 또는 무언가)?
[Decorator Pattern (패턴 디자이너)] (https://en.wikipedia.org/wiki/Decorator_pattern)에 대한 설명이 나와 있습니다. 'LoggingMessageHandler'는 데코레이터입니다. – Steven