获取部分开放泛型类型的类型表示形式
本文关键字:类型 表示 泛型类型 获取部 | 更新日期: 2023-09-27 18:02:53
我想知道是否有人知道如何在c#中获得部分开放泛型类型的表示,例如IDictionary<string,>
。
我已经试过了:
typeof(IDictionary<string,>)
我得到:'typeof'表达式不允许部分打开类型编译错误。
typeof(IDictionary<,>).MakeGenericType(typeof(string))
提供的泛型参数的数量不等于泛型类型定义的数量。参数名称:instantiation)
为什么我想这样做:
我有很多场景,我需要检查一个类是否实现了一个接口,但在一些情况下,我知道一些泛型类型参数必须是特定的(即,我想要实现一个带有字符串键的字典,但我不关心值类型)。我意识到还有许多其他方法可以做到这一点(例如,通过向我的方法提供必要的泛型参数类型数组)。但是在研究这个问题时,我很好奇是否有一种方法可以指定部分打开/部分关闭的泛型类型,因此出现了这个问题。
也许这样的东西可以回答你的问题:
class CustomDictionary<TValue> : Dictionary<string, TValue>
{
}
这个应该可以工作:
typeof(CustomDictionary<>).MakeGenericType(typeof(string))