C# 在C中将方法枚举转换为单个多播委托#

C# 在C中将方法枚举转换为单个多播委托#,c#,.net,delegates,C#,.net,Delegates,我有一个名为loggers的IEnumerable对象ILog有一个名为Log的方法,该方法与委托LogHandler匹配。我想创建一个多播委托(logHandler),它调用枚举中的所有Log方法。一种方法是: LogHandler logHandler; foreach (var logger in loggers) { logHandler += logger.Log; } 我很好奇,是否有一种更干净、更简单的方法。到目前为止,我想到的最好的办法是: LogHandler log

我有一个名为
loggers
IEnumerable
对象
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;

这似乎有点复杂,难以理解。我很好奇是否有比我的两个解决方案更干净的方法。

loggers.ForEach(x=>logHandler+=logger.Log)
@MichaelRandall是的,尽管我必须将枚举更改为
列表,因为
IEnumerable
没有
ForEach
扩展方法。我还认为你指的是
x.Log
而不是
logger.Log