首頁 >後端開發 >C++ >如何確定泛型類型是否僅使用其類型名稱來實現特定的泛型介面?

如何確定泛型類型是否僅使用其類型名稱來實現特定的泛型介面?

Linda Hamilton
Linda Hamilton原創
2025-01-07 07:05:40747瀏覽

How Can I Determine if a Generic Type Implements a Specific Generic Interface Using Only its Type Name?

確定泛型類型的介面實作

問題:

考慮這些類型定義:

public interface IFoo<T> : IBar<T> {}
public class Foo<T> : IFoo<T> {}

目標:

如何決定類型Foo實作通用介面 IBar當只有損壞的類型名稱可用時。

答案:

利用TcKs 提出的方法,我們可以使用以下LINQ 查詢:

bool isBar = foo.GetType().GetInterfaces().Any(x =>
  x.IsGenericType &&
  x.GetGenericTypeDefinition() == typeof(IBar<>));

此查詢檢查foo 變數的任何實作的介面是否是泛型型別及其泛型型別定義是否與IBar T 。如果存在這樣的接口,則表示Foo實作 IBar

以上是如何確定泛型類型是否僅使用其類型名稱來實現特定的泛型介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn