2016-03-01 67 views
1

我有一個Dictionary<Type, Dictionary<Guid,Component>>其中外部字典的關鍵是存儲在內部的對象的類型。相關的泛型參數

我想用一個通用的方法獲取內部字典中的一個對象。喜歡的東西:

public T getObject<T>(Guid id, ???/*typeof(T) passed here*/) where T : Component 

我怎麼能限制的第二個參數被typeof運算(T)?

+7

爲什麼你需要的類型,請通過?它不是已經可以通過'T'訪問嗎? –

+0

如果不能隱含,您只需在方法的調用中指定類型。 'var item = getObject (id)'。 –

回答

8

正如@Chounds Pickford所說的那樣;首先不需要接收額外的參數。

當你有通用的方法是這樣的:

public T getObject<T>(Guid id) where T : Component 
{ 
    // you can grab typeof(T) like this 
    var type = typeof(T); 
} 
0

如果您仍然想這樣做,你需要有T標記類:

public class YourClass<T> where T: Component 
{ 
    public T getObject<T>(Guid id, T myvalue) ...