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

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

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

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

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

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

如果我們寫如下代碼:

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

返回值是false。

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

那么如何解決這個問題呢?

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

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

另一種方法麻煩一點。

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

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

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

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

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

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

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

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

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í)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#使用反射和LINQ查詢程序集的元數(shù)據(jù)

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

    在?C#?中,反射是一個強(qiáng)大的工具,它允許我們在運行時檢查程序集、類型、方法等的元數(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)點擊當(dāng)前IE頁面時,獲取鼠標(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是一個用于獲取和設(shè)置屬性的類,這篇文章主要介紹了C#中屬性PropertyInfo怎么使用,需要的朋友可以參考下
    2024-06-06
  • C#(WinForm) ComboBox和ListBox添加項及設(shè)置默認(rèn)選擇項

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

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

    詳解C#中的out和ref

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

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

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

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

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

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

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

    C#身份證號碼驗證是否正確

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

最新評論

信阳市| 阳东县| 天等县| 泰和县| 五莲县| 东安县| 申扎县| 临洮县| 兴隆县| 陈巴尔虎旗| 苗栗市| 阳曲县| 翁牛特旗| 阳信县| 广水市| 镇远县| 安泽县| 新巴尔虎左旗| 石狮市| 张家界市| 南部县| 阿坝县| 武鸣县| 平顶山市| 田林县| 蓬莱市| 江山市| 都昌县| 讷河市| 修水县| 承德市| 察雅县| 乐业县| 佳木斯市| 广丰县| 临澧县| 广德县| 凌源市| 鄯善县| 乐陵市| 宣武区|