为什么扩展方法无法解决动态类型?

时间:2012-02-01 12:40:08

标签: c#-4.0 extension-methods dynamic-keyword

  

可能重复:
  Extension method and dynamic object in c#

例如:

var obj = new byte[] { 1, 2, 3 };
dynamic dobj = obj;

dobj.Count(); // fails
Enumerable.Count(dobj); // works

1 个答案:

答案 0 :(得分:1)

它不起作用,因为知道调用哪个扩展方法需要知道源代码在编译之前的样子(包括知道哪些using指令存在)。在运行时,此信息不可用。您正在使用的解决方法是一种很好的方法。