2013-04-25 90 views
0

我試圖做這樣的事情:如何動態傳遞泛型與參數類型相同?

public static void ShowTaskPane(UserControl type) 
     {    
       var item = set.OfType<typeof(type)>().FirstOrDefault(); 
    } 

,但是這是行不通的,我要選擇類型,或者傳遞參數的對象。方法簽名,如果需要,我可以改變它,但建議我該怎麼做?

回答

1

你可以定義你的方法爲:

public static void ShowTaskPane<T>() 
{ 
    var item = set.OfType<T>().FirstOrDefault(); 
} 

,然後調用它像:

ShowTaskPane<UserControl>(); 

或者,如果你的方法是假設返回控制,則:

public T ShowTaskPane<T>() 
{ 
    return set.OfType<T>().FirstOrDefault(); 
} 

這樣稱呼:

var item = ShowTaskPane<UserControl>(); 

意見反饋:是否有反正我可以限制T的類型只是 子類型UserControl?

您可以指定喜歡的約束:

public T ShowTaskPane<T>() where T : UserControl 
{ 
    return set.OfType<T>().FirstOrDefault(); 
} 
+0

感謝,但反正是有,我可以限制個T型到用戶控件的只是亞型的? – Ankit 2013-04-25 11:50:22

+0

您可以添加約束,檢查更新的答案 – Habib 2013-04-25 11:52:01

相關問題