سؤال

يقدم C#4.0 dynamic الكلمة الأساسية، والتي سيتم البحث عنها في وقت التشغيل.

هل هذا يعني أننا لن نحتاج إلى تفكير غريب بعد الآن؟إذا كان الأمر كذلك، هل يمكنك إظهار مثال على ذلك؟

هل كانت مفيدة؟

المحلول

ونحن سوف لا تزال لديها انعكاس - باستخدام "ديناميكية" ضد أهداف CLR العادية سوف استدعاء المرسل القائم على التأمل

.

وهكذا -. سنقوم لا تزال لديها انعكاس، لكنه سوف يكون من الأسهل للقيام

وهنا مثال:

// Via 'dynamic'    
dynamic dx = GetSomeCLRObject();
dx.DoSomething();
dx.SomeMember = 2;

// Via Reflection
object x = GetSomeCLRObject();
Type xt = x.GetType();
MemberInfo DoSomethingMethod = xt.GetMethod("DoSomething");
DoSomethingMethod.Invoke(x, null);
PropertyInfo SomeMemberProperty = xt.GetProperty("SomeMember");
SomeMemberProperty.SetValue(x, 2);

وأنا لا أعرف عنك، ولكن أنا أحب السابق. =)

في كل من هذه الحالات، أحصل على أي وقت التحويل البرمجي التحقق، لا التحسس، أي دعم IDE - ولكن الحالة الأولى هو أكثر تعبيرا بكثير من هذا الأخير

نصائح أخرى

وارسال الحيوي هو واحد فقط استخدام ممكن للتفكر. هناك العديد من الأسباب الوجيهة لاستجواب فئة لهيكلها، والحصول على المعلومات حول هذا الهيكل وتصور في شكل أو العمل على ذلك في بعض الطريق دون أعضاء من أي وقت مضى الوصول بشكل حيوي. التفكير هو البقاء هنا. :)

إذا كنت تريد أمثلة من الكلمة الحيوية، هنا هو شريط فيديو من PDC من الرجل نفسه الحديث عن هذا الامر (وغيرها من الاشياء C # 4.0 ذات الصلة).

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

هناك حالات حيث dynamic لن يساعد على الإطلاق:

  • حيث لا يكون اسم الطريقة معروفًا في وقت الترجمة (أييتم تحميله من إدخال التكوين / المستخدم)
  • إنشاء الكائن
  • ربما بعض السيناريوهات العامة

أكبر الاستخدامات التي أراها dynamic نكون:

  • التشغيل المتداخل COM (من الواضح)
  • دعم المشغل العام
  • كتابة البط حيث لا توجد واجهة مشتركة
  • التشغيل المتداخل لـ DLR (انظر التعليقات)

لكنها بالتأكيد لا تحل كل مشاكل التفكير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top