هل هناك أي طريقة سهلة لتكوين رمز تم إنشاؤه تلقائيًا مثل هذا؟

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

سؤال

لدي ملف سيتم استخدامه عبر العديد من مشاريع التطبيقات. الفرق الوحيد لهذه الملفات هو اسم مرجع WebService. كود مثل هذا:

public void Test(){
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client();
    // do something....
}

مثل الرمز أعلاه ، سيتم استبدال "kevin.servicereference1" بمساحة اسم مشروع التطبيق المحددة. لذلك ، وفقًا لـ Dry (لا تكرر نفسك) ، لا ينبغي لي فقط نسخ الملف إلى العديد من المشاريع وإعادة تسمية الجزء المحدد يدويًا. هل هناك أي طريقة يمكنني من خلالها استبدال بعض أجزاء ملف القالب الخاص بي بسهولة إلى شيء يتعلق بالمشروع؟

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

المحلول

هل نظرت إلى نظام ترسمة رمز T4 من Microsoft؟ قد يكون مجرد ما تحتاجه.

الروابط: http://msdn.microsoft.com/en-us/vstudio/cc308634.aspx
http://visualstudiomagazine.com/articles/2009/05/01/visual-studios-t4-code-generation.aspx

نصائح أخرى

هذه ليست مسألة جافة. على الرغم من أن الملفات قد تبدو متشابهة ، إلا أنك لا تكرر نفسك لأن العملية الوحيدة والوحيد - الإعلان وتعيين متغير - يختلف عن كل نوع **.

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

إذا كنت تبحث عن طرق لأتمتة العملية لتسهيلها على نفسك ، تحقق من ذلك قوالب T4 (خالية من Microsoft) ، أو postsharp. هناك العديد من المواضيع الأخرى هنا حول توليد الكود.

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

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