使用類型反射測試C# 中的泛型類型推斷
在C# 中,為泛型類型變數賦值需要在編譯時進行類型推斷確定值的實際類型。當嘗試在運行時測試物件是否為泛型類型時,這可能會導致混亂。
如原始程式碼所示,一種常見方法是將物件的類型與泛型類型定義進行比較。但是,這不適用於具有特定類型參數的泛型實例。
要正確測試物件是否為泛型類型的實例,可以使用System.Type 的IsGenericType 屬性:
bool isGeneric = list.GetType().IsGenericType;
如果物件是泛型類型的實例,則無論類型參數為何,都將回傳true。
如果您特別需要測試物件是否為實例通用List
bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
如果物件是List
請注意,這兩種方法都會檢查確切的類型等效性。如果物件派生自泛型類型,這些測試將傳回 false。
以上是如何在運行時可靠地測試 C# 中的泛型類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!