Если это действительно существующие методы, для которых у вас есть MethodInfo
, и они имеют правильные подписи, то я бы сказал, что Delegate.CreateDelegate
- правильный путь - он делает именно то, что вы хотите, без возня. Я бы использовал DynamicMethod
или деревья выражений, если бы мне нужно было создать делегат для выполнения некоторой логики, которая еще не была захвачена в методе.
Деревья выражений (IMO, и я не использовал DynamicMethod
в гневе) немного проще в использовании, чем DynamicMethod
, но они более ограничены - в основном они могут представлять только одно выражение (которое может вызвать другое метод, конечно). DynamicMethod
дает вам большую гибкость, но вы должны достаточно хорошо понимать IL.
Это помогает?