Action<T>
совпадает с delegate void F<T>(T t)
.То есть Action<T>
- это метод, который имеет тип возврата void
и использует экземпляры T
.
Когда вы вызываете
MethodInvoker.Execute<TestClass>(m => m.DoSomething(1));
, вы установили параметр типа T
будет TestClass
.Следовательно, вам нужно передать параметр, и этот параметр должен быть экземпляром TestClass
.
. Поэтому в первом случае вы получаете несоответствие количества параметров, а во втором - компилятор хочетпреобразовать параметр в экземпляр TestClass
.Вам нужно передать один параметр, и этот параметр должен быть экземпляром TestClass
.
Обратите внимание, что ваше действие
m => m.DoSomething(1).
Таким образом, ваше действие принимает экземпляр TestClass
который вы параметризуете m
и вызывает m.DoSomething(1)
для этого экземпляра.Теперь, когда вы динамически вызываете этот метод, вам нужно дать ему экземпляр TestClass
.Вы этого не делаете.