2011-04-01 99 views
0

我想將對象類型傳遞給方法。我爲我的CRUDRepository這樣做是由其他存儲庫繼承的,但我無法弄清楚如何知道我正在處理的類型。C# - 傳遞方法參數中的對象類型

例如:

public PageOf<Entity> GetPageOfEntity(int pageNumber, int pageSize) 
    { 
    // Here i need to work with the entity type to make calls to database 
    } 

實體是可以被其他實體(用戶,產品,等等),並且該方法返回一個分頁結果繼承一個對象。我這樣做是爲了避免爲我創建的每個實體創建一個GetPageOf方法。

什麼是正確的方式傳遞給我想要在分頁結果中處理的對象類型的方法?

編輯:

這裏的實體

 public abstract class Entity 
    { 
    public virtual long Id { get; set; } 
    public virtual DateTime Created { get; set; } 
    } 

而且用戶對象例如:

 public class User : Entity 
    { 
    public string FirstName { get; set; } 
    } 

因爲我試圖寫一個類來處理一些crud操作,我需要知道在方法中我使用了什麼對象(但我試圖現在爲每個對象類型創建一個方法)

感謝

+0

更多的代碼和細節將有所幫助。你在尋找傳球嗎?可能你可以有一個類型爲「T」的入站參數,然後可能實例化並在實例上執行一個GetType()來檢查它是什麼類型並構建該類型的pageOf並返回。 – 2011-04-01 08:25:02

+0

我想他在問什麼是如何解決T回數據上下文中的表.. – MattDavey 2011-04-01 08:28:47

+0

可能重複http://stackoverflow.com/questions/10955579/passing-just-a-type-as-a-parameter -in-c-sharp – 2013-06-16 03:23:57

回答

5

使該方法一般:

public PageOf<TEntity> GetPageOfEntity<TEntity>(int pageNumber, int pageSize) 
    where TEntity : Entity 
{ 
    Type entityType = typeof(TEntity); 
    ... 
} 
+0

感謝隊友。我將閱讀有關泛型方法和類的知識,以瞭解這種工作方式。 – 2011-04-01 08:28:12

+0

您是否還需要'TEntity'類型的參數來獲取頁面? – 2011-04-01 08:34:44

+0

@菲爾:不,但在這種情況下不能使用類型推斷。只要你明確指定類型patameter,你就很好。 – 2011-04-01 09:05:12

0

我不知道,我正確地理解你的問題,但你不能只使用一個通用的參數?

public PageOf<Entity> GetPageOfEntity<TEntity>(int pageNumber, int pageSize) 
    where TEntity : Entity 
{ 
// Here i need to work with the entity type to make calls to database 
} 
+0

對不起,但我的英語不完美(我是葡萄牙語),有時我真的不能表達自己!但是,通用參數是我需要的。謝謝 ;) – 2011-04-01 08:34:30