gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:34:28 24 4
gpt4 key购买 nike

我需要确定一个类型是否是某个泛型类型。

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> 将不起作用是一个接口(interface)类型。

if (type.IsGenericType
&& type.GetGenericTypeDefinition() == typeof(MyType<>))

关于c# - 检查两个泛型类型是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16329590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com