using System.Globalization;
using Faithlife.Reflection;
var tuple = SplitString<(bool, string, int?)>("true,hey,2", ',');
Console.WriteLine(tuple);
static T SplitString<T>(string text, char delim)
var tupleInfo = TupleInfo.GetInfo<T>();
var items = new object[tupleInfo.ItemTypes.Count];
var strings = text.Split(delim, tupleInfo.ItemTypes.Count);
for (int i = 0; i < strings.Length; i++)
var itemType = tupleInfo.ItemTypes[i];
itemType = Nullable.GetUnderlyingType(itemType) ?? itemType;
items[i] = Convert.ChangeType(strings[i], itemType, CultureInfo.InvariantCulture);
return tupleInfo.CreateNew(items);