3 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您要尋找與this.GetType()靜態(tài)方法等效的1襯管,請(qǐng)嘗試以下方法。
Type t = MethodBase.GetCurrentMethod().DeclaringType
盡管這可能比僅使用更昂貴typeof(TheTypeName)。

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
還有一些其他答案尚未完全弄清,這與您只在執(zhí)行時(shí)可用的類(lèi)型的想法有關(guān)。
如果使用派生類(lèi)型執(zhí)行靜態(tài)成員,則在二進(jìn)制文件中將省略實(shí)類(lèi)型名稱(chēng)。因此,例如,編譯以下代碼:
UnicodeEncoding.GetEncoding(0);
現(xiàn)在在其上使用ildasm ...,您將看到發(fā)出如下調(diào)用:
IL_0002: call class [mscorlib]System.Text.Encoding
[mscorlib]System.Text.Encoding::GetEncoding(int32)
編譯器已解決對(duì)的調(diào)用Encoding.GetEncoding-沒(méi)有UnicodeEncoding剩余痕跡。恐怕這會(huì)使您對(duì)“當(dāng)前類(lèi)型”的想法變得荒謬。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
另一種解決方案是使用自引用類(lèi)型
//My base class
//I add a type to my base class use that in the static method to check the type of the caller.
public class Parent<TSelfReferenceType>
{
public static Type GetType()
{
return typeof(TSelfReferenceType);
}
}
然后在繼承它的類(lèi)中,創(chuàng)建一個(gè)自引用類(lèi)型:
public class Child: Parent<Child>
{
}
現(xiàn)在,Parent內(nèi)部的調(diào)用類(lèi)型typeof(TSelfReferenceType)將獲得并返回調(diào)用者的Type,而無(wú)需實(shí)例。
Child.GetType();
-搶
- 3 回答
- 0 關(guān)注
- 495 瀏覽
添加回答
舉報(bào)