作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我在编译时不知道元组由哪些类型组成时,如何迭代元组中的项目?我只需要一个 IEnumerable 对象(用于序列化)。
private static IEnumerable TupleToEnumerable(object tuple)
{
Type t = tuple.GetType();
if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Tuple<,>))
{
var x = tuple as Tuple<object, object>;
yield return x.Item1;
yield return x.Item2;
}
}
最佳答案
您可以使用 Type.GetProperties
通过反射访问属性及其值
var values = tuple.GetType().GetProperties().Select(p => p.GetValue(tuple));
所以你的方法将是非常简单的Linq查询
private static IEnumerable TupleToEnumerable(object tuple)
{
// You can check if type of tuple is actually Tuple
return tuple.GetType()
.GetProperties()
.Select(property => property.GetValue(tuple));
}
关于c# - 如何遍历元组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43341177/
我是一名优秀的程序员,十分优秀!