我有一个声明如下的方法:
public void OriginalMethod(Func<object,bool> selector)
我想从泛型方法中调用它,它有这样的声明:
public void GenericMethod<T>(Func<T, bool> selector)
我该怎么做?
答案 0 :(得分:6)
您无法将selector
直接传递给OriginalMethod
:它需要一个接受任何object
的方法,但Func<T, bool>
只接受T
类型的对象1}}。
当然,你可以作弊:
OriginalMethod(o => selector((T)o));
但如果OriginalMethod
使用不可转换为T的对象调用该方法,则会失败...
答案 1 :(得分:3)
OriginalMethod(arg => selector((T)arg));