最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#中判斷類是否繼承于泛型基類

 更新時(shí)間:2022年04月14日 08:11:15   作者:j4587698  
這篇文章主要介紹了c#中判斷類是否繼承于泛型基類,最簡單的辦法肯定是typeof(b).baseType=typeof(a<string>)這樣就可以返回true,但是這種方法時(shí)不妥的,下面看看如何解決這個(gè)問題呢

在c#中,有時(shí)候我們會編寫類似這樣的代碼:

public class a<T> 
{ //具體類的實(shí)現(xiàn)
}
public class b : a<string>{}

如果b繼承a的類型不確定,這個(gè)時(shí)候我們是無法通過baseType來直接判斷b是否繼承于a的。

如果我們寫如下代碼:

typeof(b).baseType == typeof(a)

返回值是false。

因?yàn)?code>typeof(b).baseType返回的類型是a`1[System.String],而typeof(a<>)返回的是a`1[T]。很明顯這兩個(gè)類型是不相等的。所以上面返回flase也就是正常現(xiàn)象了。

那么如何解決這個(gè)問題呢?

最簡單的辦法肯定是typeof(b).baseType == typeof(a<string>)這樣就可以返回true。

但是由于我們用了T,所以大概率我們是不知道進(jìn)來的類型的,所以這種方法不行。

另一種方法麻煩一點(diǎn)。

首先,我們把泛型類型轉(zhuǎn)換成泛型原型,然后再去比較泛型原型就可以了。

c#中提供了獲取泛型原型的方法GetGenericTypeDefinition(),MSDN解釋如下:

返回一個(gè)表示可用于構(gòu)造當(dāng)前泛型類型的泛型類型定義的 Type 對象。

所以我們直接使用typeof(b).baseType.GetGenericTypeDefinition()既可獲取a<>。

這里需要注意的是GetGenericTypeDefinition()在b不是泛型時(shí)會拋出異常,所以我們在使用前應(yīng)該判斷b是否是一個(gè)泛型類。

c#中同樣提供了這個(gè)方法IsGenericType,MSDN解釋如下:

獲取一個(gè)值,該值指示當(dāng)前類型是否是泛型類型。

所以我們判斷一個(gè)類是否繼承于泛型基類的方法就是這樣的:

if (typeof(b).baseType.IsGenericType && typeof(b).baseType.GetGenericTypeDefinition() == typeof(a)){ 
// 這里是b繼承于a<T>的邏輯
}

到此這篇關(guān)于c#中判斷類是否繼承于泛型基類的文章就介紹到這了,更多相關(guān)c#判斷類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • WPF中ImageBrush常用方式介紹

    WPF中ImageBrush常用方式介紹

    這篇文章介紹了WPF中ImageBrush的常用方式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#使用反射和LINQ查詢程序集的元數(shù)據(jù)

    C#使用反射和LINQ查詢程序集的元數(shù)據(jù)

    在?C#?中,反射是一個(gè)強(qiáng)大的工具,它允許我們在運(yùn)行時(shí)檢查程序集、類型、方法等的元數(shù)據(jù),結(jié)合?LINQ,我們可以用更簡潔和表達(dá)力強(qiáng)的方式處理這些信息,本文將詳細(xì)講解如何使用反射與?LINQ?查詢程序集的元數(shù)據(jù),需要的朋友可以參考下
    2024-08-08
  • c# 從IE瀏覽器獲取當(dāng)前頁面的內(nèi)容

    c# 從IE瀏覽器獲取當(dāng)前頁面的內(nèi)容

    從IE瀏覽器獲取當(dāng)前頁面內(nèi)容可能有多種方式,今天我所介紹的是其中一種方法?;驹恚寒?dāng)鼠標(biāo)點(diǎn)擊當(dāng)前IE頁面時(shí),獲取鼠標(biāo)的坐標(biāo)位置,根據(jù)鼠標(biāo)位置獲取當(dāng)前頁面的句柄,然后根據(jù)句柄,調(diào)用win32的東西進(jìn)而獲取頁面內(nèi)容。感興趣的朋友可以參考下本文
    2021-06-06
  • C#中屬性PropertyInfo使用示例小結(jié)

    C#中屬性PropertyInfo使用示例小結(jié)

    在C#中,PropertyInfo是一個(gè)用于獲取和設(shè)置屬性的類,這篇文章主要介紹了C#中屬性PropertyInfo怎么使用,需要的朋友可以參考下
    2024-06-06
  • C#(WinForm) ComboBox和ListBox添加項(xiàng)及設(shè)置默認(rèn)選擇項(xiàng)

    C#(WinForm) ComboBox和ListBox添加項(xiàng)及設(shè)置默認(rèn)選擇項(xiàng)

    這篇文章主要介紹了C#(WinForm) ComboBox和ListBox添加項(xiàng)及設(shè)置默認(rèn)選擇項(xiàng)的的相關(guān)資料,需要的朋友可以參考下
    2014-07-07
  • 詳解C#中的out和ref

    詳解C#中的out和ref

    本文主要介紹了out和ref的相關(guān)知識。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • 詳解WPF中值轉(zhuǎn)換器的使用方法

    詳解WPF中值轉(zhuǎn)換器的使用方法

    在WPF(Windows Presentation Foundation)中,值轉(zhuǎn)換器(Value Converter)是一種機(jī)制,允許你在綁定時(shí)轉(zhuǎn)換綁定源和綁定目標(biāo)之間的值,本文給大家介紹了WPF中值轉(zhuǎn)換器的使用方法,需要的朋友可以參考下
    2024-02-02
  • Linq利用Distinct去除重復(fù)項(xiàng)問題(可自己指定)

    Linq利用Distinct去除重復(fù)項(xiàng)問題(可自己指定)

    這篇文章主要介紹了Linq利用Distinct去除重復(fù)項(xiàng)問題(可自己指定),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# 對XML基本操作代碼總結(jié)

    C# 對XML基本操作代碼總結(jié)

    C# 對XML基本操作包括讀取節(jié)點(diǎn)的數(shù)據(jù),添加節(jié)點(diǎn)。讀取節(jié)點(diǎn)屬性,修改節(jié)點(diǎn)屬性等
    2011-10-10
  • C#身份證號碼驗(yàn)證是否正確

    C#身份證號碼驗(yàn)證是否正確

    這一篇關(guān)于C#語言驗(yàn)證18位身份證號碼的驗(yàn)證方法和實(shí)例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-09-09

最新評論

加查县| 日喀则市| 蕲春县| 阿拉善左旗| 朝阳市| 海林市| 轮台县| 赣州市| 图木舒克市| 县级市| 阜康市| 湖南省| 广德县| 中方县| 阜康市| 开封市| 新民市| 禹城市| 三穗县| 平阴县| 晋中市| 陵水| 哈尔滨市| 常山县| 台安县| 收藏| 淮安市| 游戏| 从江县| 休宁县| 奎屯市| 六安市| 桑植县| 平乐县| 武鸣县| 太湖县| 临安市| 翼城县| 泾源县| 错那县| 新丰县|