.NET CF 2.0 雖引入泛型,但受限於映射驗證機制,存在兩大限制:不支援泛型遞歸嵌套、泛型方法類型參數最多 8 個。實測代碼驗證差異。
List<List<int>> 在完整框架編譯運行正常,CF 設備上運行拋出異常(編譯不報錯)。
原因:CF 缺少驗證工具,編譯期不驗證約束,運行時映射驗證失敗。
完整框架支援任意數量:
void GetInfo2<T1...T9>(T1 t1, ..., T9 t9) // 9 個參數,正常運行
CF 設備上超過 8 個類型參數即失敗。
設備項目中註釋掉的代碼即為失敗用例:
// 失敗:遞歸嵌套
// MyClass1<int> clsA = new MyClass1<int>();
// clsA.ClsB = new MyClass1<MyClass1<int>>();
// 失敗:9 個類型參數
// GetInfo2<int, string, float, decimal, UserClass1...UserClass5>(...);
List<List<T>>),改用自定義類封裝內層集合。