Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menggunakan kaedah generik dengan pembolehubah jenis yang diselesaikan secara dinamik dalam C#?

Bagaimanakah saya boleh menggunakan kaedah generik dengan pembolehubah jenis yang diselesaikan secara dinamik dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-02-03 08:15:10945semak imbas

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

Menggunakan Jenis Dinamik Jenis Pembolehubah C#Kaedah Generasi

Apabila menggunakan kaedah generik, anda sering menghadapi jenis parameter apabila menyusun, tetapi secara dinamik menentukan parameter jenis semasa runtime. Refleks menyediakan penyelesaian yang kuat untuk mengatasi cabaran ini.

penyelesaian genetik genetik yang dihasilkanHodHod

Untuk menggunakan jenis yang disimpan dalam pembolehubah mytype untuk memanggil kaedah generik GenericMedHod

, anda boleh menggunakan kaedah berikut:

  1. MethodInfo Menggunakan Kaedah Refleksi:

    <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));</code>
  2. Menyediakan parameter jenis untuk membina kaedah generik:

    <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
  3. panggil kaedah generik pembina:

    <code class="language-csharp">generic.Invoke(this, null);</code>
kaedah staticmethod static

untuk memanggil kaedah generik statik staticmethod

, sila ikuti langkah yang sama:

  1. metodinfo untuk mendapatkan kaedah generik statik:

    <code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));</code>
  2. Gunakan Parameter Jenis Membina Kaedah Generik:

    <code class="language-csharp">MethodInfo generic = method.MakeGenericMethod(myType);</code>
  3. panggil kaedah generik pembina.

    <code class="language-csharp">generic.Invoke(null, null);</code>
  4. C# 4 dan kata kunci dinamik yang dibawa oleh mudah

Walaupun refleksi menyediakan penyelesaian yang kuat untuk memanggil kaedah generik, ia mungkin melibatkan banyak kod model. Walau bagaimanapun, bermula dari C# 4, anda boleh menggunakan kata kunci dinamik untuk memudahkan proses ini. Jika kesimpulan jenis tersedia, menggunakan dinamik dapat mengurangkan kod yang diperlukan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan kaedah generik dengan pembolehubah jenis yang diselesaikan secara dinamik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn