Вывод типа лямбды и dynamic
От: SergASh  
Дата: 19.06.19 07:20
Оценка:
Привет всем!

Вот небольшой примерчик.
Первый, многословный вариант компилируется.

А второй нет, компилятор считает что, 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>();
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.