如何使用Func <t,bool =“”>作为Func的参数<object,bool =“”>?</object,> </t,>

时间:2011-12-19 10:34:39

标签: c# c#-4.0

我有一个声明如下的方法:

public void OriginalMethod(Func<object,bool> selector)

我想从泛型方法中调用它,它有这样的声明:

public void GenericMethod<T>(Func<T, bool> selector)

我该怎么做?

2 个答案:

答案 0 :(得分:6)

您无法将selector直接传递给OriginalMethod:它需要一个接受任何object的方法,但Func<T, bool>只接受T类型的对象1}}。

当然,你可以作弊:

OriginalMethod(o => selector((T)o));

但如果OriginalMethod使用不可转换为T的对象调用该方法,则会失败...

答案 1 :(得分:3)

OriginalMethod(arg => selector((T)arg));