相关疑难解决方法(0)

找出类型是否实现了通用接口

假设我有一个类型MyType.我想做以下事情:

  1. 找出MyType是否为某些T实现了IList接口.
  2. 如果(1)的答案为是,请找出T是什么.

看起来这样做的方法是GetInterface(),但这只允许您按特定名称进行搜索.有没有办法搜索"IList形式的所有接口"(如果可能的话,如果接口是IList的子接口,它也会有用.)

相关:如何确定类型是否实现特定的通用接口类型

.net c# reflection

54
推荐指数
2
解决办法
2万
查看次数

基本接口的通用类型

我的班级结构(简化)

interface Foo<T> { }
abstract class Bar1 : Foo<SomeClass> { }
abstract class Bar2 : Foo<SomeOtherClass> { }
class FinalClass1 : Bar1 { }
class FinalClass2 : Bar2 { }
Run Code Online (Sandbox Code Playgroud)

现在,只有类型FinalClass1和FinalClass2,我需要从Foo接口获取它们各自的T类型 - FinalClass1的SomeClass和FinalClass2的SomeOtherClass.抽象类可以实现更通用的接口,但始终只有一个Foo.

  1. 如何使用反射来实现这一目标?

  2. 无论T是什么类型,我怎样才能确保类型实现Foo?就像是

bool bIsFoo = typeof(SomeType).IsAssignableFrom(Foo<>)

以上不起作用.

c# generics reflection .net-core

5
推荐指数
1
解决办法
163
查看次数

标签 统计

c# ×2

reflection ×2

.net ×1

.net-core ×1

generics ×1