Привет всем!
Вот небольшой примерчик.
Первый, многословный вариант компилируется.
А второй нет, компилятор считает что, target.OnLog( logEntry ) возвращает dynamic.
Как так?
public interface ILogNotifications
{
Task OnLog( dynamic logEntry );
}
public class LogNotificationsMultiplexer : ILogNotifications
{
public Task OnLog( dynamic logEntry )
{
// так работает
var result1 = Task.WhenAll( targets_.Select( (Func<ILogNotifications, Task>)( target => target.OnLog( logEntry ) ) ) );
// а так нет
var result2 = Task.WhenAll( targets_.Select( target => target.OnLog( logEntry ) ) );
return result1;
}
private readonly ConcurrentBag<ILogNotifications> targets_ = new ConcurrentBag<ILogNotifications>();
}