[英]How to use Func<T, bool> as a parameter for Func<object, bool>?
我有一個聲明的方法,如下所示:
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.