可能重复:
c#中的扩展方法和动态对象
例如:
var obj = new byte[] { 1, 2, 3 };
dynamic dobj = obj;
dobj.Count(); // fails
Enumerable.Count(dobj); // works
它不起作用,因为知道要调用哪个扩展方法需要知道源代码在编译之前的样子(包括知道存在哪些using
指令)。在运行时,此信息不可用。您正在使用的变通方法是一种很好的方法。