首頁 > 後端開發 > C++ > 如何調用C#中動態分辨類型變量的通用方法?

如何調用C#中動態分辨類型變量的通用方法?

Linda Hamilton
發布: 2025-02-03 08:15:10
原創
856 人瀏覽過

How Can I Invoke Generic Methods with Dynamically Resolved Type Variables in C#?

使用動態解析的類型變量調用C#泛型方法

在使用泛型方法時,經常會遇到在編譯時不知道類型參數,而是在運行時動態確定類型參數的情況。反射提供了一種強大的解決方案來應對這一挑戰。

泛型方法GenericMethod的解決方案

要使用存儲在myType變量中的類型調用泛型方法GenericMethod,可以使用以下方法:

  1. 使用反射獲取泛型方法的MethodInfo:

    <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));</code>
    登入後複製
  2. 使用MakeGenericMethod提供類型參數來構造泛型方法:

    <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
    登入後複製
    登入後複製
  3. 調用構造的泛型方法:

    <code class="language-csharp">generic.Invoke(this, null);</code>
    登入後複製

靜態方法StaticMethod的解決方案

要調用靜態泛型方法StaticMethod,請按照類似的步驟操作:

  1. 獲取靜態泛型方法的MethodInfo:

    <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));</code>
    登入後複製
  2. 使用類型參數構造泛型方法:

    <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
    登入後複製
    登入後複製
  3. 調用構造的泛型方法,由於它是靜態方法,因此將null作為第一個參數傳遞:

    <code class="language-csharp">generic.Invoke(null, null);</code>
    登入後複製

C# 4和dynamic關鍵字帶來的簡化

雖然反射為調用泛型方法提供了一個強大的解決方案,但它可能涉及相當多的樣板代碼。但是,從C# 4開始,您可以利用dynamic關鍵字來簡化此過程。如果類型推斷可用,使用dynamic可以顯著減少所需的代碼量。

以上是如何調用C#中動態分辨類型變量的通用方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板