首页 新闻 搜索 专区 学院

netcore 中如何判断类是否继承某泛型类

0
悬赏园豆:5 [已解决问题] 解决于 2022-12-03 13:16
    public class b1<T>:b1<T,string>
    {

    }
    public class b1<T1, T2>:b1<T1,T2,int>
    {

    }
    public class b1<T1, T2, T3>:c1<T1>
    {

    }
    public class c1<T1>
    {

    }
    public class a1 : b1<string>
    {

    }
    public class a2 : b1<string, int>
    {

    }
    public class a3 : b1<string, int,decimal>
    {

    } 

如上的类结构关系。

 怎么判断a1,a2,a3都继承了b1和c1

问题补充:

或者说,有什么插件能直接实现的?

小白求教各位大佬。

尾随前行的主页 尾随前行 | 初学一级 | 园豆:12
提问于:2022-12-02 00:37
< >
分享
最佳答案
0

可以用 IsAssignableTo 判断

Console.WriteLine(typeof(a1).IsAssignableTo(typeof(b1<string>)));
// True
Console.WriteLine(typeof(a1).IsAssignableTo(typeof(c1<string>)));
// True
Console.WriteLine(typeof(a2).IsAssignableTo(typeof(b1<string>)));
// False
Console.WriteLine(typeof(a2).IsAssignableTo(typeof(c1<string>)));
// True
Console.WriteLine(typeof(a3).IsAssignableTo(typeof(b1<string>)));
// False
Console.WriteLine(typeof(a3).IsAssignableTo(typeof(c1<string>)));
// True
收获园豆:3
dudu | 高人七级 |园豆:35038 | 2022-12-02 18:01
其他回答(2)
0
typeof(T).[IsAssignableFrom, IsSubclassOf](typeof(T2))

看看这2个api

收获园豆:2
czd890 | 园豆:12929 (专家六级) | 2022-12-02 10:23
0

感谢各位大佬的回答, 目前找到了一个完美解决方案

https://solutionschecker.com/questions/check-if-a-class-is-derived-from-a-generic-class/

尾随前行 | 园豆:12 (初学一级) | 2022-12-03 13:16

原文是 stackoverflow 上的 Check if a class is derived from a generic class

支持(0) 反对(0) dudu | 园豆:35038 (高人七级) | 2022-12-03 22:55

@dudu: 感谢大佬回复 , 这个是原始的来源

支持(0) 反对(0) 尾随前行 | 园豆:12 (初学一级) | 2022-12-04 12:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册