首頁 > 後端開發 > C++ > 如何確定重整類型是否實作 C# 中的通用介面?

如何確定重整類型是否實作 C# 中的通用介面?

Patricia Arquette
發布: 2025-01-07 07:13:46
原創
923 人瀏覽過

How Can I Determine if a Mangled Type Implements a Generic Interface in C#?

根據Mungled 類型確定通用介面的實作

在只有表示類別的損壞類型可用的情況下,確定它是否實現通用介面可能具有挑戰性。考慮以下範例:

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}
登入後複製

問題出現了:我們如何確定類型 Foo 是否實作了通用介面 IBar當僅提供損壞類型時?

解決方案:

解決此查詢的一種方法是利用 C# 中提供的 IsGenericType 和 GetGenericTypeDefinition 方法。這些方法允許檢查和操作泛型類型。

// Assuming 'foo' represents the mangled type of 'Foo<T>'
bool isBar = foo.GetType().IsGenericType
  && foo.GetType().GetGenericTypeDefinition() == typeof(IBar<>);
登入後複製

此程式碼評估重整類型是否為泛型,並將其泛型類型定義與預期的介面類型定義 typeof(IBar) 進行比較。如果兩個條件都滿足,則 isBar 變數設為 true,表示該類型實作了通用介面。

以上是如何確定重整類型是否實作 C# 中的通用介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板