如何在C#中获取元组的组件?
如果我声明了一个如何在C#中获取元组的组件?,c#,C#,如果我声明了一个元组,我想得到以下结果 一个对象,我会想象这是一个类型对象,我可以对它执行比较,效果是obj==typeof(Tuple),它将返回true 类型对象的数组,相当于new[]{typeof(int),typeof(double)}。这一点我可以通过反射来理解,因为tuple对象将其项公开为属性,但我不知道这些属性的顺序,MSDN文章说我不能依赖观察 我需要这个来为泛型方法做一个特例,如果它传递了一个元组,它应该做一些特殊的事情。像这样: void foo<T>(...
元组
,我想得到以下结果
obj==typeof(Tuple)
,它将返回true
new[]{typeof(int),typeof(double)}
。这一点我可以通过反射来理解,因为tuple对象将其项公开为属性,但我不知道这些属性的顺序,MSDN文章说我不能依赖观察void foo<T>(...){
if(T == Tuple<Q, S, ...>){
//special code that needs to know what Q and S and ... are.
}
}
void foo(…){
if(T==元组){
//需要知道Q、S和…是什么的特殊代码。
}
}
提前谢谢
if (typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(Tuple<,,>))
{
}
返回传递给元组的类型参数数组。非常感谢。遗憾的是,我不得不提前知道争论的数量。我想这是没有办法的?嗯,元组排列的数量是有限的,所以你可以计划一下。例如,您可以将所有16种类型存储在一个数组中,并获取与类型参数数==GetGenericArguments().Length相对应的类型。
typeof(T).GetGenericArguments()