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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C#中的泛型,使用變量類型作為參數(shù)

C#中的泛型,使用變量類型作為參數(shù)

C#
慕尼黑8549860 2019-11-23 16:11:55
C#中的泛型,使用變量類型作為參數(shù)我有一個(gè)通用的方法bool DoesEntityExist<T>(Guid guid, ITransaction transaction) where T : IGloballyIdentifiable;如何以下列方式使用該方法:Type t = entity.GetType();DoesEntityExist<t>(entityGuid, transaction);我一直收到愚蠢的編譯錯(cuò)誤:找不到類型或命名空間名稱't'(您是否缺少using指令或程序集引用?)DoesEntityExist<MyType>(entityGuid, transaction);完美的工作,但我不想使用if指令每次調(diào)用具有單獨(dú)類型名稱的方法。
查看完整描述

3 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

關(guān)于泛型的觀點(diǎn)是給出編譯時(shí)類型安全性 - 這意味著需要在編譯時(shí)知道類型。

可以使用僅在執(zhí)行時(shí)已知的類型調(diào)用泛型方法,但您必須使用反射:

// For non-public methods, you'll need to specify binding flags tooMethodInfo method = GetType().GetMethod("DoesEntityExist")
                             .MakeGenericMethod(new Type[] { t });method.Invoke(this, new object[] { entityGuid, transaction });

伊克。

您是否可以使您的調(diào)用方法變得通用,并將您的類型參數(shù)作為類型參數(shù)傳遞,將決策推高到堆棧的一級(jí)?

如果您可以向我們提供有關(guān)您正在做的事情的更多信息,那將有所幫助。有時(shí)您可能需要使用上面的反射,但是如果您選擇正確的點(diǎn),那么您可以確保只需要執(zhí)行一次,并讓低于該點(diǎn)的所有內(nèi)容以正常方式使用type參數(shù)。



查看完整回答
反對(duì) 回復(fù) 2019-11-24
?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

解決這個(gè)問題的一種方法是使用隱式轉(zhuǎn)換:

bool DoesEntityExist<T>(T entity, Guid guid, ITransaction transaction) where T : IGloballyIdentifiable;

這樣稱呼它:

DoesEntityExist(entity, entityGuid, transaction);

更進(jìn)一步,您可以將其轉(zhuǎn)換為擴(kuò)展方法(它需要在靜態(tài)類中聲明):

static bool DoesEntityExist<T>(this T entity, Guid guid, ITransaction transaction) where T : IGloballyIdentifiable;

這樣稱呼:

entity.DoesEntityExist(entityGuid, transaction);



查看完整回答
反對(duì) 回復(fù) 2019-11-24
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

我不確定我是否正確理解您的問題,但您可以這樣編寫代碼:

bool DoesEntityExist<T>(T instance, ....)

您可以按以下方式調(diào)用該方法:

DoesEntityExist(myTypeInstance, ...)

這種方式您不需要顯式寫入類型,框架將自動(dòng)從實(shí)例中超過類型。


查看完整回答
反對(duì) 回復(fù) 2019-11-24
  • 3 回答
  • 0 關(guān)注
  • 397 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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