Iasyncenumeable of blazor compoents or higher order functions.
TestWithList();
TestWithArray();
void TestWithList()
{
Table<int> tableInt = new Table<int>();
Table<string> tableString = new Table<string>();
List<Table> tableList = [tableInt, tableString]; // 向上轉型成 Table
ClassifyTables(tableList);
}
void TestWithArray()
{
Table<int> tableInt = new Table<int>();
Table<string> tableString = new Table<string>();
Table[] tableArray = [tableInt, tableString]; // 陣列共變(允許)
ClassifyTables(tableArray);
}
// 泛型方法;呼叫時由引數型別推斷 T(這裡會推成 Table)
void ClassifyTables<T>(IEnumerable<T> source)
{
source.Select(item => item switch
{
Table<int> tInt => 1,
Table<string> tStr => 2,
Table<long> tLong => 3,
_ => 4
}).Dump();
}
class Table { }
class Table<T> : Table { }