如何使用Func <T,bool>作为Func <object,bool>的参数?

Gie*_*ius 3 c# c#-4.0

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

public void OriginalMethod(Func<object,bool> selector)
Run Code Online (Sandbox Code Playgroud)

我想从泛型方法中调用它,它具有如下声明:

public void GenericMethod<T>(Func<T, bool> selector)
Run Code Online (Sandbox Code Playgroud)

我怎么做?

Tho*_*que 6

你不能selector直接传递给OriginalMethod:它期望一个接受any的方法object,但Func<T, bool>只接受一个类型的对象T.

当然,你可以作弊:

OriginalMethod(o => selector((T)o));
Run Code Online (Sandbox Code Playgroud)

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