gpt4 book ai didi

c# - 如何检查 ValueTuple 列表是否为 C# 7 中的 List 类型

转载 作者:太空宇宙 更新时间:2023-11-03 20:48:08 25 4
gpt4 key购买 nike

我如何检查 ValueTuple 列表的类型是否为 List<ValueTuple> , 不考虑参数的类型。

可能是:

new List<(150, "test")>()
new List<("testy", "test", 148)>()
new List<(true, "blablabla")>()

我尝试过的

 public static bool IsTupleType2(this object tuple)
{
return tuple is ITuple;
}

此扩展方法适用于 ValueTuple 对象

所以我尝试了 List<ITuple>但它不起作用

 public static bool IsTupleType2(this object tuple)
{
return tuple is List<ITuple>;
}

有什么想法吗?

非常感谢。

最佳答案

这是一种相当简单(如果有点冗长)的方法:

private static readonly Type[] tupleTypes = new[]
{
typeof(ValueTuple<>), typeof(ValueTuple<,>), typeof(ValueTuple<,,>),
typeof(ValueTuple<,,,>), typeof(ValueTuple<,,,,>), typeof(ValueTuple<,,,,,>),
typeof(ValueTuple<,,,,,,>), typeof(ValueTuple<,,,,,,,>)
};

public static bool IsListOfValueTuple(Type type)
{
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
var arg = type.GetGenericArguments()[0];
return arg.IsGenericType && tupleTypes.Contains(arg.GetGenericTypeDefinition());
}
return false;
}

public static void Main()
{
Console.WriteLine(IsListOfValueTuple(typeof(List<(string, int)>)));
}

关于c# - 如何检查 ValueTuple 列表是否为 C# 7 中的 List<ValueTuple> 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com