使用動態型別參數呼叫泛型方法
在C# 中,使用僅執行時已知的型別參數呼叫泛型方法需要利用反射功能。最初的挑戰涉及循環遍歷特定命名空間中的介面並使用這些介面作為參數呼叫通用方法。
要克服這個問題,請按照以下步驟操作:
例如,考慮以下程式碼:
// Get the generic method MethodInfo method = typeof(Test).GetMethod("CallMe"); // Get the list of interfaces in the specified namespace var types = typeof(Test).Assembly .GetTypes() .Where(t => t.Namespace == "Interfaces"); // Loop through the interfaces foreach (Type type in types) { // Create a specialized generic method MethodInfo genericMethod = method.MakeGenericMethod(type); // Invoke the method with no target or arguments genericMethod.Invoke(null, null); }
在此例如,我們檢索「CallMe」泛型方法,為每個介面類型建立專用版本,並反射性地調用它們。
注意:如果您正在處理的介面類型本身就是泛型,請使用 MakeGenericType 而不是 MakeGenericMethod ,傳入適當的型別參數。
以上是如何使用反射在 C# 中呼叫帶有動態類型參數的泛型方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!