Iceshrimp.NET/Iceshrimp.Backend/Core/Extensions/ListDestructuringExtensions.cs
2024-03-24 14:17:02 +01:00

56 lines
No EOL
1.4 KiB
C#

namespace Iceshrimp.Backend.Core.Extensions;
public static class ListDestructuringExtensions
{
public static void Deconstruct<T>(this IList<T> list, out T item1)
{
if (list.Count != 1)
throw new Exception("This deconstructor only takes lists of length 1");
item1 = list[0];
}
public static void Deconstruct<T>(this IList<T> list, out T item1, out T item2)
{
if (list.Count != 2)
throw new Exception("This deconstructor only takes lists of length 2");
item1 = list[0];
item2 = list[1];
}
public static void Deconstruct<T>(this IList<T> list, out T item1, out T item2, out T item3)
{
if (list.Count != 3)
throw new Exception("This deconstructor only takes lists of length 3");
item1 = list[0];
item2 = list[1];
item3 = list[2];
}
public static void Deconstruct<T>(this IList<T> list, out T item1, out T item2, out T item3, out T item4)
{
if (list.Count != 4)
throw new Exception("This deconstructor only takes lists of length 4");
item1 = list[0];
item2 = list[1];
item3 = list[2];
item4 = list[3];
}
public static void Deconstruct<T>(
this IList<T> list, out T item1, out T item2, out T item3, out T item4, out T item5
)
{
if (list.Count != 5)
throw new Exception("This deconstructor only takes lists of length 5");
item1 = list[0];
item2 = list[1];
item3 = list[2];
item4 = list[3];
item5 = list[4];
}
}