2011-11-03 49 views
6

我開發接口的樣本項目,我想這是儘可能通用返回IEnumerable的 所以我創建像下面 如何從一個方法

public interface IUserFactory 
{  
    IEnumerable<Users> GetAll(); 
    Users GetOne(int Id); 
} 

一個接口,但隨後發生的事情,我不得不重複做界面下方

public interface IProjectFactory 
{  
    IEnumerable<Projects> GetAll(User user); 
    Project GetOne(int Id); 
} 

,如果你看了上面的區別就是他們返回類型,所以我創建類似下面才發現我得到錯誤Cannot Resolve Symbol T什麼我做錯了

public interface IFactory 
{  
    IEnumerable<T> GetAll(); 
    T GetOne(int Id); 
} 

回答

11

你需要使用一個通用的interface/class,不只是generic methods

public interface IFactory<T> 
{  
    IEnumerable<T> GetAll(); 
    T GetOne(int Id); 
} 

接口上定義泛型類型/類確保類在整個類中都是已知的(無論使用哪種類型說明符)。

+1

+1接受,欣賞和保存從我 – Deeptechtons

+0

每天30分鐘順便說一句這是與您前面回答'公共接口IFactory的 { 的IEnumerable GETALL(); 類型GetOne(int Id); }' – Deeptechtons

+2

@Deeptechtons - 差不多。 'Type'是一個實際的.NET類名,所以這可能看起來不明確。但泛型類型參數的名稱可以是任何東西。 – Oded

10

聲明接口類型:

public interface IFactory<T> 
+0

+1即使你是一樣的俄德的,我愛他,參照解釋的方式。 – Deeptechtons

2

編譯器無法推斷T的用途。您還需要在課程級別聲明它。

嘗試:

public interface IFactory<T> 
{ 
    IEnumerable<T> GetAll(); 
    T GetOne(int Id); 
} 
相關問題