動態呼叫 C# 泛型方法
C# 中的一個常見挑戰涉及呼叫泛型方法,其中類型參數直到運行時才知道。 編譯器無法在編譯時解析類型會導致錯誤。
雖然 C# 中首選編譯時類型安全,但反射為需要運行時類型確定的情況提供了解決方案:
<code class="language-csharp">MethodInfo method = GetType().GetMethod("DoesEntityExist") .MakeGenericMethod(new Type[] { t }); method.Invoke(this, new object[] { entityGuid, transaction });</code>
這使用反射動態呼叫泛型方法DoesEntityExist
,取代運行時類型t
。 然而,反射會增加複雜性並對表現產生負面影響。
更有效率且類型安全的方法是重構程式碼。 不要依賴反射,而是考慮使呼叫方法本身通用:
這將類型決定轉移到更高的級別,避免了運行時反射的需要。
提供有關您的具體用例的更多詳細資訊將有助於提供更精確的指導。 在 C# 中,優先考慮編譯時類型安全性至關重要。如果需要反思,請重新評估您的設計,以便在開發過程的早期階段可能合併泛型。
以上是如何存取具有動態確定類型的 C# 泛型方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!