If they're actually existing methods which you have a MethodInfo
for, and they have the right signatures, then I'd say Delegate.CreateDelegate
is the right way to go - it does exactly what you want, with no fuss. I'd use DynamicMethod
or expression trees if I needed to build a delegate to execute some logic which wasn't already captured in a method.
Expression trees are (IMO, and I haven't used DynamicMethod
in anger) slightly easier to use than DynamicMethod
, but they're more restricted - basically they can only represent a single expression (which could call another method, of course). DynamicMethod
gives you lots of flexibility, but you need to understand IL reasonably well.
Does that help?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…