首页 >后端开发 >C++ >如何确定泛型类型是否仅使用其类型名称来实现特定的泛型接口?

如何确定泛型类型是否仅使用其类型名称来实现特定的泛型接口?

Linda Hamilton
Linda Hamilton原创
2025-01-07 07:05:40739浏览

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