Не удается добавить динамический элемент в IList

В следующем примере кода вызовы l.Add(s) и c.Add(s) успешны, но не удаются, когда для универсального IList.

    var l = new List();
    dynamic s = "s";
    l.Add(s);
    var c = (ICollection)l;
    c.Add(s);
    var i = (IList)l;
    i.Add("s"); // works
    i.Add(s); // fails

https://dotnetfiddle.net/Xll2If

Необработанное исключение: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: нет перегрузки для метода «Добавить» принимает » 1 'аргументы в CallSite.Target (Closure, CallSite, IList`1, Object) в System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid2 [T0, T1] (сайт CallSite, T0 arg0, T1 arg1) в Program.Main () в C: \ Dev \ PlayGround \ PlayGround \ Program.cs: строка 13

IList происходит из ICollection. Может кто-нибудь объяснить, почему не удается вызвать IList.Add?

10
задан Gerd K 9 July 2018 в 08:42
поделиться