В следующем примере кода вызовы 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
?