public T getValueByName<T>(String name)
{
if(T is List)
Object containedType = T.WhatGoesHere()?
...
在上面的代碼中,我需要知道是否可以將List轉換爲傳入的列表類型,例如List<Control>
。通用容器內部是什麼類型
有沒有辦法查詢包含類型的泛型?我能得到List<Control>
,List<String>
,List<Form>
等。
我可能分裂的API來在所包含的類型傳入,因此需要調用者使用的列表一個方法,一個用於簡單類型一個單獨的方法返回列表。無論哪種方式,他們必須知道什麼是回來,但如果有一個順利的方式來做我所問的事情,我寧願保持簡單的API。
注意:這是缺少協方差的解決方案,因爲即使在包含的類型上定義了隱式轉換運算符,List到T的轉換也會失敗。所以,爲了遵循解決方案listOfB.Cast<A>();
from here,我需要知道要投什麼(什麼是A)。
謝謝!
可以使用的typeof(T),然後使用反射來獲取泛型類型參數 – Charleh 2014-10-17 14:13:37
看到這個問題1 on:http://stackoverflow.com/questions/293905/reflection-getting-the-generic-parameters-from-a-system-type-instance – Charleh 2014-10-17 14:15:22
可能的重複[如何從通用列表中獲取T的類型 ](http://stackoverflow.com/questions/557340/how-to-get-the-type-of-t-from-a-generic-listt) –
2014-10-17 14:16:05