Not. See fooobar.com/questions/37954 / ...
When you use a dynamic object, you cannot call the extension method with the extension method syntax. To make it clear:
int[] arr = new int[5]; int first1 = arr.First();
Both of them are fine, but with dynamic
dynamic arr = new int[5]; int first1 = arr.First();
This is logical if you know how dynamic objects work. A dynamic variable / field / ... is just an object / field / ... variable (plus an attribute), which the C # compiler knows should be considered dynamic . And what does "treatment as dynamic" mean? This means that the generated code, instead of using the variable directly, uses reflection to search for the necessary methods / properties / ... inside the type of the object (therefore, in this case, inside the type int[] ). A clear reflection cannot go around all loaded assemblies in order to look for extension methods that can be anywhere.
source share