簡體   English   中英

如何使用Func <T, bool> 作為Func的參數 <object, bool> ?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM