warisan dalam warisan yang berorientasikan objek membolehkan fungsi memperluaskan kelas induknya. Apabila menggunakan kelas generik, menentukan sama ada kelas diperoleh daripada kelas generik tertentu boleh membantu. Walau bagaimanapun, periksa atribut IssubClassof mungkin tidak berfungsi seperti yang diharapkan.
Untuk menyelesaikan masalah ini, kita boleh menggunakan kaedah Issubclassofrawgenerc, yang membandingkan definisi jenis kelas induk dengan jenis yang disediakan.
Serpihan kod berikut menunjukkan cara menggunakan kaedah ini:
Dengan definisi jenis generik perbandingan dan bukannya nama jenis terhad yang lengkap, kaedah ISSubClassofRawgneric dapat menentukan sama ada kelas ditugaskan untuk generasi diri.
<code class="language-csharp">static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) { while (toCheck != null && toCheck != typeof(object)) { var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck; if (generic == cur) { return true; } toCheck = toCheck.BaseType; } return false; }</code>
Atas ialah kandungan terperinci Bagaimanakah saya dapat mengenal pasti kelas yang diperoleh dari kelas generik di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!