在不考虑参数类型的情况下,如何检查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>;
}有什么想法吗?
非常感谢。
发布于 2019-10-23 17:06:56
这是一种相当简单(虽然有点冗长)的方法:
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)>)));
}https://stackoverflow.com/questions/58519103
复制相似问题