3 回答
TA贡献1836条经验 获得超4个赞
通过使用TcK的答案,也可以使用以下LINQ查询来完成:
bool isBar = foo.GetType().GetInterfaces().Any(x =>
x.IsGenericType &&
x.GetGenericTypeDefinition() == typeof(IBar<>));
TA贡献1827条经验 获得超8个赞
您必须遍历继承树,并在树中找到每个类的所有接口,如果接口是通用的,则与typeof(IBar<>)调用结果进行比较。当然,这有点痛苦。Type.GetGenericTypeDefinition
TA贡献1784条经验 获得超7个赞
public interface IFoo<T> : IBar<T> {}
public class Foo : IFoo<Foo> {}
var implementedInterfaces = typeof( Foo ).GetInterfaces();
foreach( var interfaceType in implementedInterfaces ) {
if ( false == interfaceType.IsGeneric ) { continue; }
var genericType = interfaceType.GetGenericTypeDefinition();
if ( genericType == typeof( IFoo<> ) ) {
// do something !
break;
}
}
- 3 回答
- 0 关注
- 505 浏览
添加回答
举报