سوف C # 4.0 الكائنات الحيوية لديها بعض التسهيلات لكتابة البط؟

StackOverflow https://stackoverflow.com/questions/259929

  •  06-07-2019
  •  | 
  •  

سؤال

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

وأي بمعنى. بدلا من مجرد

dynamic foo = GetSomeDynamicObject();

ولديها القدرة للادلاء أو تحويلها إلى تقييد لعقد المعروفة، مثل

IFoo foo2 = foo.To<IFoo>;

وأو حتى مجرد

IFoo foo2 = foo as IFoo;

لا يمكن العثور على أي شيء من هذا القبيل في المواد الموجودة في C # 4.0، ولكن يبدو وكأنه امتداد منطقي للنموذج ديناميكي. أي شخص لديه المزيد من المعلومات؟

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

المحلول

وأنا لست على علم بأي شيء يشبه حقا بطة الكتابة، وأنا خائف. لقد <لأ href = "http://msmvps.com/blogs/jon_skeet/archive/2008/10/30/c-4-0-dynamic-lt-t-gt.aspx" يختلط = "نوفولو noreferrer" > كتبت عن فكرة ، ولكن لا أتوقع أي دعم. ربما لن يكون من الصعب جدا لاستخدام Reflection.Emit لجعل الطبقة التي سيولد تنفيذ أي واجهة معينة، مع كائن ديناميكي في منشئ ومجرد إنشاء وكلاء كل مكالمة من خلال إليها. ليست مثالية، ولكنه قد يكون مؤقتا.

نصائح أخرى

وهذا هو فكرة باردة. إذا كنت أفهم، كنت واصفا / اقتراح قدرة CLR، حيث، عند محاولة ويلقي كائن ديناميكي إلى واجهة، فإنه ينبغي أن ننظر إلى ما الأساليب / خصائص الكائن يدعم ديناميكية ومعرفة ما اذا كان لديها تلك التي التنفيذ الفعال تلك الواجهة. ثم CLR أن رعاية "تنفيذ IFoo" على الكائن، لذلك يمكنك بعد ذلك يلقي الكائن الحيوي إلى IFoo. من شبه المؤكد أن هذا لن تكون معتمدة، ولكن انها فكرة مثيرة للاهتمام.

أجاب

وتوبياس Hertkorn سؤالي هنا مع وصلة لله <لأ href = "http://saftsack.fs.uni-bayreuth.de/~dun3/archives/first-look-ducktyping-c-4-0-idynamicobject-metaobject/202.html" يختلط = "نوفولو noreferrer "> مشاركة المدونة تبين مثال على كيفية استخدام الأسلوب تحويل () على MetaObject لإرجاع الوكيل الحيوية. يبدو <م> جدا اعدة.

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