У меня есть IEnumerable<ILog>
объект с именем loggers
. ILog
имеет метод с именем Log
, который соответствует делегату LogHandler
. Я хотел бы создать один многоадресный делегат (logHandler), который вызывает в перечислении все Log
методы. Один из способов сделать это:
LogHandler logHandler;
foreach (var logger in loggers)
{
logHandler += logger.Log;
}
Мне любопытно, есть ли более понятный способ сделать это одним вкладышем. Пока что лучшее, что я придумал, это:
LogHandler logHandler = Delegate.Combine(loggers.Select(log => new LogHandler(log.Log) as Delegate).ToArray()) as LogHandler;
Это кажется немного запутанным и нечитаемым. Мне любопытно, есть ли более чистый способ, чем два моих решения.