如何使用 Func 作为 Func
本文关键字:bool Func 参数 object 何使用 作为 | 更新日期: 2023-09-27 18:18:10
我有一个声明的方法,如下所示:
public void OriginalMethod(Func<object,bool> selector)
我想从泛型方法调用它,它有这样的声明:
public void GenericMethod<T>(Func<T, bool> selector)
我该怎么做?
你不能
将selector
直接传递给OriginalMethod
:它需要一个接受任何object
的方法,但一个Func<T, bool>
只接受T
类型的对象。
当然,你可以作弊:
OriginalMethod(o => selector((T)o));
但是,如果OriginalMethod
使用不可转换为 T 的对象调用该方法,它将失败......
您需要
创建一个调用传入的类型化Func<object, bool>
。
public void GenericMethod<T>(Func<T, bool> selector)
{
Func<object, bool> untypedSelector = (object obj) => selector((T)obj);
OriginalMethod(untypedSelector);
}
要么像上面那样,要么像马克的回答那样单行。
OriginalMethod(arg => selector((T)arg));