我有一个用例,我需要检查一个值是否是 C# 7 ValueTuple,如果是,则遍历每个项目。我尝试检查,obj is ValueTuple
但obj is (object, object)
两者都返回错误。我发现我可以使用obj.GetType().Name
并检查它是否以开头,"ValueTuple"
但这对我来说似乎很蹩脚。欢迎任何替代方案。
我也有获取每个项目的问题。我试图Item1
使用此处找到的解决方案:如何检查属性是否存在于 c# 中的动态匿名类型上?但((dynamic)obj).GetType().GetProperty("Item1")
返回空值。我希望然后我可以做一个while
来获得每件物品。但这不起作用。我怎样才能得到每件物品?
更新 - 更多代码
if (item is ValueTuple) //this does not work, but I can do a GetType and check the name
{
object tupleValue;
int nth = 1;
while ((tupleValue = ((dynamic)item).GetType().GetProperty($"Item{nth}")) != null && //this does not work
nth <= 8)
{
nth++;
//Do stuff
}
}