2011-06-14 25 views
3

我有一個通用的方法:(簡體)爲C#泛型類型創建存根方法

public class DataAccess : IDataAccess 
{ 
    public List<T> GetEntity<T>() 
    { 
     return GetFromDatabase<T>(); //Retrieve from database base on Type parameter 
    } 
} 

出於測試目的,我要創建我要「富」應該有一些數據返回存根:

public class DataAccessStub : IDataAccess 
{ 
    public List<T> GetEntity<T>() 
    { 
     List<Foo> listFoo = new List<Foo>(); 
     Foo foo = new Foo(); 
     foo.Name = "Some Name"; 
     listFoo.Add(foo); 

     return listFoo; // I want Foo to be returned 
    } 
} 

由於T還沒有確定是什麼類型的呢,我不能返回List<Foo>。編譯器錯誤將會發生。那麼,如何爲這種通用方法編寫一個存根?

編輯:改變了一點點的代碼。第一種方法將根據類型參數從數據庫中檢索。第二個是測試的存根。 對不起,我不確定這是否解釋我想提到的。

謝謝。

+0

第一個存根有什麼問題?調用者需要通過(或者在上下文中)T的值。 – carlosfigueira 2011-06-14 03:13:19

+3

我不明白這個問題,是不是你想要的第一個例子? – 2011-06-14 03:13:38

+0

如果你已經知道它是一個'List ',爲什麼你要把'List '作爲返回類型? – Gabe 2011-06-14 03:20:22

回答

3
interface IA 
{ 
    List<T> Get<T>(); 
} 

class StubA : IA 
{ 
    public List<T> Get<T>() 
    { 
     var item = new Foo(); 
     var data = new List<Foo> {item}; 
     return new List<T>(data.Cast<T>()); 
    } 
} 
+0

謝謝!這給了我答案。 :) – TMS 2011-06-14 05:59:22