微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 检查两个泛型类型是否相等

我需要找到一个类型是否是某种泛型类型.
class MyType<T> {}
var instance = new MyType<int>();
var type = instance.GetType();

此检查不起作用,但这是我想要检查的.如果类型是该泛型类型,则无论T是什么.

type == typeof( MyType<> )

这确实有效,但感觉很脏.它也可能是错误的,因为它不是FullName.

type.Name == typeof( MyType<> ).Name

我假设有办法做到这一点,但我还没找到.使用IsAssignableFrom是行不通的,因为我需要知道当前的类型,而不是它的父类之一是否相等.

解决方法

如果对象的具体类型是MyType< T>,则这将起作用.它不适用于从MyType< T>派生的类型的实例,并且如果MyType< T>,则不起作用.是一种接口类型.
if (type.IsGenericType
    && type.GetGenericTypeDeFinition() == typeof(MyType<>))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐