[C#] طريقة التمديد والكائن الديناميكي


Answers

للتوسع في جواب جون ، فإن السبب في عدم نجاحه هو أنه في طرق إضافة التعليمات البرمجية غير الديناميكية العادية ، يعمل ذلك من خلال إجراء بحث كامل لكل الفئات المعروفة إلى المحول البرمجي لفئة ثابتة لها أسلوب ملحق يطابق. يتم ترتيب البحث بناءًا على مساحة الاسم المتداخلة والمتاحة using التوجيهات في كل مساحة اسم.

وهذا يعني أنه من أجل الحصول على حل بطريقة بديلة للإضافة بطريقة ديناميكية ، يجب أن تعرف DLR في وقت التشغيل ما كانت عليه جميع أسماء المجالات التي تم إدراجها using التوجيهات في شفرة المصدر الخاصة بك . ليس لدينا آلية سهلة لترميز كل تلك المعلومات في موقع الاتصال. نظرنا في اختراع مثل هذه الآلية ، لكننا قررنا أنها كانت تكلفة باهظة للغاية وأدت إلى الكثير من مخاطر الجدول الزمني لكي تكون ذات قيمة.

Question

سأقوم بتلخيص مشكلتي في مقتطف الشفرة التالي.

List<int> list = new List<int>() { 5, 56, 2, 4, 63, 2 };
Console.WriteLine(list.First());

شفرة فوق تعمل بشكل جيد.

الآن حاولت ما يلي

dynamic dList = list;
 Console.WriteLine(dList.First());

لكنني أتلقى RuntimeBinderException. لماذا يتم ذلك؟