Код: Выделить всё
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);
}
}
< /code>
В нижней части цепи может быть imessagehandler < /code>, который не передает сообщение в следующую.TopLevelClass -> LoggingMessageHandler -> DoSomethingMessageHandler -> FinalHandler
[*] Пропустить loggingmessagehandler toplevelclass (чтобы выполнить свою зависимость на imessagehandler )
[*] pass hasshangehesshousshousshash )
[*] Loggingmessagehandler (чтобы выполнить ее зависимость от imessagehandler )
Pass LoggingMessAgeHandler to finalhandler (для выполнения его зависимости от imessagehandler ) Ienumerable)? Или мне придется использовать дополнительный класс между ними (фабрика или что -то в этом роде)?
Подробнее здесь: https://stackoverflow.com/questions/223 ... -interface
Мобильная версия