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

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

檢查類(lèi)是否是特定泛型的子類(lèi)

檢查類(lèi)是否是特定泛型的子類(lèi)

C#
一只萌萌小番薯 2021-12-25 16:29:02
我有以下課程:public class HtSecurePage : UserControl, IDisposable{}public class HtSecureInstancePage<T1> : HtSecurePage{}public partial class NormalPage : HtSecurePage{}public partial class InstancePage : HtSecureInstancePage<ZlsManager>{}要檢查是否NormalPage是subClass的HtSecurePage我用的是以下模式。if (typeof(NormalPage).BaseType == typeof(HtSecurePage)){}如果我對(duì) 使用此模式InstancePage,則它不起作用。if (typeof(InstancePage).BaseType == typeof(HtSecureInstancePage<>)){}我需要知道,如果一個(gè)Type是直接subClass的HtSecurePage或HtSecureInstancePage<>。(重要的是不要檢查HtSecureInstancePage<ZlsManager>?。㏕ype T1未知。
查看完整描述

2 回答

?
慕碼人2483693

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

下面的函數(shù)檢查您的類(lèi)的子類(lèi)是否提供了相同類(lèi)型的類(lèi)。如果類(lèi)型是泛型,則在泛型類(lèi)型定義上執(zhí)行檢查操作。


方法使用

bool isInherited = CheckIsDirectlyInherited(typeof(TestAbstract), new[] {typeof(SecondLevelAbstractClass), typeof(FirstLevelAbstract)});

方法

bool CheckIsDirectlyInherited(Type obj, Type[] baseTypes)

{

    if (obj.BaseType == null)

        return false;


    var objGenericDefinition = obj.BaseType;

    if (objGenericDefinition.IsGenericType)

    {

        objGenericDefinition = objGenericDefinition.GetGenericTypeDefinition();

    }


    foreach (Type baseType in baseTypes)

    {

        var baseTypeDefinition = baseType;

        if (baseTypeDefinition.IsGenericType)

            baseTypeDefinition = baseType.GetGenericTypeDefinition();


        if (objGenericDefinition == baseTypeDefinition)

            return true;

    }


    return false;

}


查看完整回答
反對(duì) 回復(fù) 2021-12-25
?
翻過(guò)高山走不出你

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

是 HtSecurePage 的直接子類(lèi)


我想你已經(jīng)知道怎么做了


Console.WriteLine(typeof(HtSecureInstancePage<ZlsManager>).BaseType == typeof(HtSecurePage));

是 HtSecureInstancePage<> 的直接子類(lèi)


要檢查它,您可以使用以下內(nèi)容:


static bool IsDirectSubclassOfRawGeneric(Type parent, Type toCheck)

{

    return toCheck.BaseType.IsGenericType && parent == toCheck.BaseType.GetGenericTypeDefinition();

}

...

Console.WriteLine(IsDirectSubclassOfRawGeneric(typeof(HtSecureInstancePage<>), typeof(InstancePage)));



查看完整回答
反對(duì) 回復(fù) 2021-12-25
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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