Почему методы расширения не могут быть разрешены для динамических типов?
Возможный дубликат:
Метод расширения и динамический объект в C#
Например:
var obj = new byte[] { 1, 2, 3 };
dynamic dobj = obj;
dobj.Count(); // fails
Enumerable.Count(dobj); // works
1 ответ
Решение
Это не работает, потому что знание того, какой метод расширения вызывать, требует знания того, как выглядел исходный код до его компиляции (включая знание того, какой using
директивы присутствовали). Во время выполнения эта информация не доступна. Обходной путь, который вы используете, - это хороший подход.