The problem is that Action (other than an existing type, rename it) is actually a group of methods that converts to the delegate type Action<int> . The I / O mechanism cannot infer a type because the expressions of the method group are irrelevant. If you actually passed a group of methods to Action<int> , then the type-output is successful:
Method((Action<int>)Action);
source share