This question already has answers here:
Cast delegate to Func in C#

(8个答案)


5年前关闭。




我定义了以下委托(delegate):
public delegate object MyDelegate(dynamic target);

我有一个Func<dynamic, object>对象:
Func<dynamic, object> myFunc

如何将myFunc转换为MyDelegate

我已经尝试过这些说明,但没有一个起作用:
MyDelegate myDeleg = myFunc;
MyDelegate myDeleg = (MyDelegate) myFunc;
MyDelegate myDeleg = myFunc as MyDelegate;

最佳答案

您可以包装现有的委托(delegate):

(MyDelegate)(x => myFunc(x))

或等效地:
MyDelegate myDeleg = x => myFunc(x);

这会在每次调用时造成很小的性能损失,但是代码非常简单。

10-08 16:20