我有一個用C#編寫的應用程序。我的應用有一個如下所示的類:在C#中使用泛型接口#
public class FinderA
{
public IEnumerable<FinderA> GetItems()
{
return FinderA.FindAll();
}
}
我想要求其他類做類似的事情。我不能使用基類,因爲我的實際實現已經在使用基類。出於這個原因,我想創建一個接口。目前,我嘗試以下:
public interface IFinder
{
IEnumerable<T> GetItems();
}
當我使用這種方法,我得到的是說,一個編譯時錯誤:「類型或命名空間名稱‘T’找不到(是否缺少。 ..「爲了克服這個問題,我想補充<T>
到接口名稱的末尾,以便它看起來像這樣:
public interface IFinder<T>
{
IEnumerable<T> GetItems();
}
這反過來又產生另一種說,編譯時錯誤:」使用泛型類型「IFinder '需要1個類型參數'「我的挑戰是,我希望接口是通用的,我不想傳入一個類型,有沒有辦法解決這個問題呢?如果是這樣,什麼/如何?
請求沒有任何意義......你不想傳入一個類型,但你希望接口是通用的。如果你的界面是通用的,那意味着你必須傳入一個類型。 –
@TimothyShields他希望推斷它;具體而言,他希望泛型參數始終是實現接口的類型。至少,這就是它的樣子。當然,C#中沒有這樣的功能。 – Servy
一個猜測,根據你如何定義FinderA:'public interface IFinder {IEnumerable GetItems(); }' –
ASh