获取部分开放泛型类型的类型表示形式



我想知道是否有人知道如何在c#中获得部分开放泛型类型的表示,例如IDictionary<string,>

我已经试过了:

typeof(IDictionary<string,>)

我得到:'typeof'表达式不允许部分打开类型编译错误。

typeof(IDictionary<,>).MakeGenericType(typeof(string))
提供的泛型参数的数量不等于泛型类型定义的数量。参数名称:instantiation)

为什么我想这样做:

我有很多场景,我需要检查一个类是否实现了一个接口,但在一些情况下,我知道一些泛型类型参数必须是特定的(即,我想要实现一个带有字符串键的字典,但我不关心值类型)。我意识到还有许多其他方法可以做到这一点(例如,通过向我的方法提供必要的泛型参数类型数组)。但是在研究这个问题时,我很好奇是否有一种方法可以指定部分打开/部分关闭的泛型类型,因此出现了这个问题。

也许这样的东西可以回答你的问题:

class CustomDictionary<TValue> : Dictionary<string, TValue>
{
}

这个应该可以工作:

typeof(CustomDictionary<>).MakeGenericType(typeof(string))

最新更新