"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استدعاء طرق عامة بشكل ديناميكي مع وسيطات النوع المحددة في وقت التشغيل في C#؟

كيف يمكنني استدعاء طرق عامة بشكل ديناميكي مع وسيطات النوع المحددة في وقت التشغيل في C#؟

نشر في 2025-03-22
تصفح:460

How Can I Dynamically Invoke Generic Methods with Runtime-Determined Type Arguments in C#?

ومع ذلك ، فإنك تواجه أخطاء وقت الترجمة بسبب وسيطات النوع غير المعروفة في وقت الترجمة.

الحل

تعريف.

قم بإنشاء مثيل الطريقة العامة

: اتصل بالطريقة makegenericmethod على تعريف الطريقة العامة لإنشاء مثيل الطريقة المحددة للوسيطة المطلوبة. الوسائط.

باستخدام system.linq ؛ باستخدام System.Seplection ؛ الطبقة العامة testclass { كابينيريك باطل ثابت عام () { console.writeLine ($ "النوع العام: {typeof (t)}") ؛ } الفراغ الثابت العام () { var Assembly = Assembly.getExecutingAssembly () ؛ واجهات var = Assembly.getTypes () . where (t => t.namespace == "myNamesPace.Interfaces") ؛ var genericmethod = typeof (testClass) .getMethod ("callgeneric") ؛ foreach (var interfaceType في واجهات) { var genericmethodinstance = genericMethod.MakeGenericMethod (interfaceType) ؛ genericmethodinstance.invoke (null ، null) ؛ // لا حاجة إلى هدف أو حجج } } }

    في هذا المثال:
  1. يتم تعريف طريقة callgeneric على أنها طريقة عامة تطبع وسيطة النوع العام. مثيل طريقة عام لكل نوع واجهة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3