// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.ComponentModel; using System.Runtime.CompilerServices; namespace System { /// /// Provides extension methods for instances to interop with C# tuples features (deconstruction syntax, converting from and to ). /// public static class TupleExtensions { #region Deconstruct /// /// Deconstruct a properly nested with 1 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1) { item1 = value.Item1; } /// /// Deconstruct a properly nested with 2 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2) { item1 = value.Item1; item2 = value.Item2; } /// /// Deconstruct a properly nested with 3 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2, out T3 item3) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; } /// /// Deconstruct a properly nested with 4 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; } /// /// Deconstruct a properly nested with 5 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; } /// /// Deconstruct a properly nested with 6 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; } /// /// Deconstruct a properly nested with 7 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; } /// /// Deconstruct a properly nested with 8 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; } /// /// Deconstruct a properly nested with 9 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; } /// /// Deconstruct a properly nested with 10 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; } /// /// Deconstruct a properly nested with 11 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; } /// /// Deconstruct a properly nested with 12 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; } /// /// Deconstruct a properly nested with 13 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; } /// /// Deconstruct a properly nested with 14 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; } /// /// Deconstruct a properly nested with 15 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; } /// /// Deconstruct a properly nested with 16 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; } /// /// Deconstruct a properly nested with 17 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; item17 = value.Rest.Rest.Item3; } /// /// Deconstruct a properly nested with 18 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; item17 = value.Rest.Rest.Item3; item18 = value.Rest.Rest.Item4; } /// /// Deconstruct a properly nested with 19 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; item17 = value.Rest.Rest.Item3; item18 = value.Rest.Rest.Item4; item19 = value.Rest.Rest.Item5; } /// /// Deconstruct a properly nested with 20 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; item17 = value.Rest.Rest.Item3; item18 = value.Rest.Rest.Item4; item19 = value.Rest.Rest.Item5; item20 = value.Rest.Rest.Item6; } /// /// Deconstruct a properly nested with 21 elements. /// [EditorBrowsable(EditorBrowsableState.Never)] public static void Deconstruct( this Tuple>> value, out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20, out T21 item21) { item1 = value.Item1; item2 = value.Item2; item3 = value.Item3; item4 = value.Item4; item5 = value.Item5; item6 = value.Item6; item7 = value.Item7; item8 = value.Rest.Item1; item9 = value.Rest.Item2; item10 = value.Rest.Item3; item11 = value.Rest.Item4; item12 = value.Rest.Item5; item13 = value.Rest.Item6; item14 = value.Rest.Item7; item15 = value.Rest.Rest.Item1; item16 = value.Rest.Rest.Item2; item17 = value.Rest.Rest.Item3; item18 = value.Rest.Rest.Item4; item19 = value.Rest.Rest.Item5; item20 = value.Rest.Rest.Item6; item21 = value.Rest.Rest.Item7; } #endregion #region ToValueTuple /// /// Make a properly nested from a properly nested with 1 element. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1); } /// /// Make a properly nested from a properly nested with 2 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2); } /// /// Make a properly nested from a properly nested with 3 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2, value.Item3); } /// /// Make a properly nested from a properly nested with 4 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4); } /// /// Make a properly nested from a properly nested with 5 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5); } /// /// Make a properly nested from a properly nested with 6 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6); } /// /// Make a properly nested from a properly nested with 7 elements. /// public static ValueTuple ToValueTuple( this Tuple value) { return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7); } /// /// Make a properly nested from a properly nested with 8 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1)); } /// /// Make a properly nested from a properly nested with 9 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2)); } /// /// Make a properly nested from a properly nested with 10 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3)); } /// /// Make a properly nested from a properly nested with 11 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4)); } /// /// Make a properly nested from a properly nested with 12 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5)); } /// /// Make a properly nested from a properly nested with 13 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6)); } /// /// Make a properly nested from a properly nested with 14 elements. /// public static ValueTuple> ToValueTuple( this Tuple> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7)); } /// /// Make a properly nested from a properly nested with 15 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1))); } /// /// Make a properly nested from a properly nested with 16 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2))); } /// /// Make a properly nested from a properly nested with 17 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3))); } /// /// Make a properly nested from a properly nested with 18 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4))); } /// /// Make a properly nested from a properly nested with 19 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5))); } /// /// Make a properly nested from a properly nested with 20 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6))); } /// /// Make a properly nested from a properly nested with 21 elements. /// public static ValueTuple>> ToValueTuple( this Tuple>> value) { return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6, value.Rest.Rest.Item7))); } #endregion #region ToTuple /// /// Make a properly nested from a properly nested with 1 element. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1); } /// /// Make a properly nested from a properly nested with 2 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2); } /// /// Make a properly nested from a properly nested with 3 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2, value.Item3); } /// /// Make a properly nested from a properly nested with 4 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4); } /// /// Make a properly nested from a properly nested with 5 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5); } /// /// Make a properly nested from a properly nested with 6 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6); } /// /// Make a properly nested from a properly nested with 7 elements. /// public static Tuple ToTuple( this ValueTuple value) { return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7); } /// /// Make a properly nested from a properly nested with 8 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1)); } /// /// Make a properly nested from a properly nested with 9 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2)); } /// /// Make a properly nested from a properly nested with 10 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3)); } /// /// Make a properly nested from a properly nested with 11 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4)); } /// /// Make a properly nested from a properly nested with 12 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5)); } /// /// Make a properly nested from a properly nested with 13 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6)); } /// /// Make a properly nested from a properly nested with 14 elements. /// public static Tuple> ToTuple( this ValueTuple> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7)); } /// /// Make a properly nested from a properly nested with 15 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1))); } /// /// Make a properly nested from a properly nested with 16 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2))); } /// /// Make a properly nested from a properly nested with 17 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3))); } /// /// Make a properly nested from a properly nested with 18 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4))); } /// /// Make a properly nested from a properly nested with 19 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5))); } /// /// Make a properly nested from a properly nested with 20 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6))); } /// /// Make a properly nested from a properly nested with 21 elements. /// public static Tuple>> ToTuple( this ValueTuple>> value) { return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7, CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7, Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6, value.Rest.Rest.Item7))); } #endregion private static ValueTuple CreateLong(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest) where TRest : struct, ITuple => new ValueTuple(item1, item2, item3, item4, item5, item6, item7, rest); private static Tuple CreateLongRef(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest) where TRest : ITuple => new Tuple(item1, item2, item3, item4, item5, item6, item7, rest); } }