باستخدام قوالب T4 لإنشاء مواديلات ViewModels

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

  •  28-09-2019
  •  | 
  •  

سؤال

في رأيي هذا يبدو وكأنه فكرة رائعة. باستخدام Envdte من شأنه أن يجعل هذا ممكنًا أيضًا ، فلماذا لا توجد أمثلة أخرى على هذا؟

ربما أفتقد عيبًا في القيام بذلك ...؟

أي مؤشر إلى موارد T4 و Envdte جيدة سيكون رائعا. قون

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

المحلول

ربما لا ترى ذلك كثيرًا لأنه من الصعب للغاية تنفيذها بشكل جيد. لقد كنت أستخدم T4 لإنشاء فئات النماذج من WCF DTOs للاستخدام في متغير MVP WinForms لفترة من الوقت ، واستغرق الأمر بعض الوقت لجعله يعمل بشكل صحيح.

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

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

كل ما سبق يمكن معالجته ، لكن من الصعب تنفيذ النهج الذي يناسب الجميع. بالعودة إلى جزء "مثال" من سؤالك ، هناك أيضًا قضية محتملة تتمثل في القيام بالكثير من العمل دون الحصول على أموال مقابل ذلك. أحب أن أكون قادرًا على مشاركة T4 التي قمت بإنشائها لتوليد النماذج ، لكنها تنتمي إلى صاحب العمل ، ولدي أشياء أفضل لوقت فراغي من إعادة تنفيذ النهج للنشر على الويب ...

نصائح أخرى

من الصعب للغاية استخدام فصل كمصدر "بيانات" لقالب

هذا خطأ. انظر إلى سقالات ASP MVC 3.http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

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