التوافق مع C# 3.0 على .Net 2.0
-
05-07-2019 - |
سؤال
ما هي ج#3.0 ميزات اللغة التي يمكننا استخدامها في تطبيق يستهدف إطار عمل .Net 2.0؟
ملاحظة: أعرف القليل من الأشخاص الذين يحبون تعبيرات Lambda و var
الكلمة الرئيسية
المحلول
يرجى الاطلاع هنا:
استخدام بناء الجملة C# 3.0 (.Net 3.5) في تطبيق .Net 2.0
للتعرف بشكل كامل على ما يمكنك وما لا يمكنك فعله عند استهداف .NET 2.0 Framework واستخدام C# 3.0.
في ملخص:
- أنت لا أستطيع استخدم التجميعات 3.5 الجديدة (System.Data.Linq وSystem.Xml.Linq وSystem.Core).
- أنت لا أستطيع يستخدم Linq/ملحقات الاستعلام أو طرق التمديد (ومع ذلك، انظر أدناه للتعرف على طرق تمكين استخدام كل من بناء جملة Linq/Query وطرق الامتداد!).
- أنت يستطيع استخدم ال الكلمة الأساسية فار, تصريحات لامدا, مُهيئات الكائنات, أنواع مجهولة & الخصائص التي يتم تنفيذها تلقائيًا.
نوع عمل طرق الامتداد، ومع ذلك، فإنها تتطلب "System.Runtime.CompilerServices.ExtensionAttribute" لكي تعمل، وهذا النوع موجود داخل System.Core DLL (الذي لا يعد جزءًا صارمًا من إطار عمل .NET 2.0).
لا يمكن استخدام بناء جملة الاستعلام "خارج الصندوق" إذا جاز التعبير، ومع ذلك، يمكن استخدامه إذا كان ملف DLL لجهة خارجية (مثل لينكبريدج) يستخدم.يقوم ملف DLL هذا بإعادة تنفيذ العديد من الأنواع "المفقودة" التي تحتاجها لتنفيذ LINQ بشكل فعال عند استهداف إطار عمل .NET 2.0.كما أنه ينفذ أيضًا نوع "ExtensionAttribute" المطلوب لكي تعمل أساليب الامتداد، لذا فإن إضافة/الرجوع إلى LINQBridge DLL من مشروعك سيؤدي إلى تمكين LINQ وصياغة/تعبيرات الاستعلام وطرق الامتداد!
نصائح أخرى
انا لدي مقالة حول هذا الموضوع بالذات.
باختصار:
أيد:
- الخصائص التي يتم تنفيذها تلقائيًا، والمتغيرات والمصفوفات المحلية المكتوبة ضمنيًا، ومهيئات الكائنات والمجموعات، والأنواع المجهولة، والأساليب الجزئية، وتعبيرات لامدا المحولة إلى أنواع المفوضين.
مدعوم جزئيا:
- طرق الامتداد (تتطلب سمة) وتعبيرات الاستعلام (تتطلب شيئًا مثل LINQBridge لتكون مفيدة)
غير معتمد:
- تم تحويل Lambdas إلى أشجار تعبيرية
في الواقع، لقد سمعت هذا التحويل إلى أشجار التعبير يكون متاح بمساعدة تنفيذ Mono لـ System.Core
.رغم أنني لم أجربه بعد ...أظل أقصد القيام بذلك (ثم تحديث الصفحة).