Вы можете использовать тот факт, что ValueTuples реализуют интерфейс ITuple .
Единственная проблема заключается в том, что элементы кортежа могут быть произвольного типа, поэтому список должен принимать любой тип.
public List<object> TupleToList(ITuple tuple)
{
var result = new List<object>(tuple.Length);
for (int i = 0; i < tuple.Length; i++)
{
result.Add(tuple[i]);
}
return result;
}
Это также работает как метод расширения:
public static class ValueTupleExtensions
{
public static List<object> ToList(this ITuple tuple)
{
var result = new List<object>(tuple.Length);
for (int i = 0; i < tuple.Length; i++)
{
result.Add(tuple[i]);
}
return result;
}
}
Таким способом можно написать var list = (123, "Text").ToList();
.