通用集合类型测试
本文关键字:类型 测试 集合类 集合 | 更新日期: 2023-09-27 18:32:32
我想根据给定的集合类型(使用反射)进行一些操作,而不考虑泛型类型。
这是我的代码:
void MyFct(Type a_type)
{
// Check if it's type of List<>
if (a_type.Name == "List`1")
{
// Do stuff
}
// Check if it's type of Dictionary<,>
else if (a_type.Name == "Dictionary`2")
{
// Do stuff
}
}
它目前有效,但对我来说很明显,这不是最安全的解决方案。
void MyFct(Type a_type)
{
// Check if it's type of List<>
if (a_type == typeof(List<>))
{
// Do stuff
}
// Check if it's type of Dictionary<,>
else if (a_type == typeof(Dictionary<,>))
{
// Do stuff
}
}
我也试过了,它实际上可以编译但不起作用......我还尝试测试给定集合类型的所有接口,但这意味着集合中接口的独占性......
我希望我说清楚了,我的英语缺乏培训:)
如果你想看看某些东西是否实现了特定的泛型类型,那么你需要这样做:
if(a_type.IsGenericType && a_type.GetGenericTypeDefinition() == typeof(List<>))
GetGenericTypeDefinition()
方法将返回测试所依据的无界泛型类型。