使用object []参数将任何委托转换为委托

时间:2018-04-26 18:02:32

标签: c# .net object delegates func

我想转换任何返回的委托,例如bool,其中第一个参数是MyClass类型,其他参数可以转换为object,例如

bool FirstMethod(MyClass foo, int integer, string text)
bool SecondMethod(MyClass foo, string text, AnotherClass bar)

Func<MyClass, object[], bool>,因此MyClass之后的参数将被推送到对象数组中 这有可能吗?

1 个答案:

答案 0 :(得分:2)

你手头有一个:

delegate bool FirstMethod(MyClass foo, int integer, string text);

并且您希望编写一个转换方法,其中包含其中一个并返回

Func<MyClass, object[], bool>

这很简单:

static Func<MyClass, object[], bool> Convert(FirstMethod f) =>
  (m, o) => f(m, (int)o[0], (string)o[1]);

完成。只需为您需要转换的每个代表类型执行此操作。

如果你愿意,你甚至可以把它变成一种扩展方法。