第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從泛型類或方法的成員中獲取T的類型?

如何從泛型類或方法的成員中獲取T的類型?

阿波羅的戰(zhàn)車 2019-06-20 16:58:02
如何從泛型類或方法的成員中獲取T的類型?假設(shè)我在類或方法中有一個泛型成員,那么:public class Foo<T>{     public List<T> Bar { get; set; }     public void Baz()     {         // get type of T     }   }當(dāng)我實(shí)例化類時,T成MyTypeObject1,因此該類具有一個泛型List屬性:List<MyTypeObject1>..這同樣適用于非泛型類中的泛型方法:public class Foo{     public void Bar<T>()     {         var baz = new List<T>();         // get type of T     }}我想知道,我的類的列表包含什么類型的對象。因此,List屬性調(diào)用Bar或者局部變量baz,包含哪種類型的T?我做不到Bar[0].GetType(),因?yàn)榱斜砜赡馨阍亍N以撛趺醋觯?
查看完整描述

3 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊

如果我正確理解,您的列表具有與容器類本身相同的類型參數(shù)。如果是這樣,那么:

Type?typeParameterType?=?typeof(T);


查看完整回答
反對 回復(fù) 2019-06-20
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個贊

(注:我想你所知道的就是objectIList或者類似的,并且在運(yùn)行時列表可以是任何類型)

如果你知道這是List<T>,然后:

Type type = abc.GetType().GetGenericArguments()[0];

另一種選擇是查看索引器:

Type type = abc.GetType().GetProperty("Item").PropertyType;

使用新的TypeInfo:

using System.Reflection;// ...var type = abc.GetType().GetTypeInfo().GenericTypeArguments[0];


查看完整回答
反對 回復(fù) 2019-06-20
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

使用下面的擴(kuò)展方法,您可以不進(jìn)行反射就可以逃脫:

public static Type GetListType<T>(this List<T> _){
    return typeof(T);}

或更一般的:

public static Type GetEnumeratedType<T>(this IEnumerable<T> _){
    return typeof(T);}

用法:

List<string>        list    = new List<string> { "a", "b", "c" };
IEnumerable<string> strings = list;IEnumerable<object> objects = list;
Type listType    = list.GetListType();          
 // stringType stringsType = strings.GetEnumeratedType();  
 // stringType objectsType = objects.GetEnumeratedType();  // BEWARE: object


查看完整回答
反對 回復(fù) 2019-06-20
  • 3 回答
  • 0 關(guān)注
  • 1482 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號