確定類型是否從重整類型實現通用介面類型
通用介面和類別在以下方面提供了很大的靈活性和類型安全性:程式碼,但使用和檢查它們可能有點麻煩。在本文中,我們將解決一個特定問題:當只有重整類型可用時,確定類型是否實作泛型介面。
為了提供範例,讓我們考慮以下類型定義:
public interface IFoo<T> : IBar<T> {} public class Foo<T> : IFoo<T> {}
問題是,我們如何確定類型Foo
處理這種情況的常用建議方法是利用反射。以下是實現它的方法:
// Assume a mangled type 'typeof(Foo)' is provided. Type fooType = typeof(Foo); // Check if 'Foo' implements the generic interface 'IBar<T>'. bool isBar = fooType.GetInterfaces().Any(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IBar<>)); Console.WriteLine(isBar);
此 LINQ 查詢檢查 Foo 實現的接口,僅關注通用接口。如果這些泛型介面中的任何一個與 IBar 的定義匹配,它將傳回 true。
透過利用這種方法,即使在處理損壞的類型時,您也可以有效地確定類型是否實現特定的泛型接口,為您的類型自省和分析需求提供有價值的見解。
以上是如何確定類型是否使用其重整類型實作通用介面?的詳細內容。更多資訊請關注PHP中文網其他相關文章!