هل يمكنني عرض فصل دراسي من مساحة اسم .net أخرى كفصل دراسي في مساحة الاسم الخاصة بي؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

هل يمكنني عرض فصل دراسي من مساحة اسم .net أخرى كفصل دراسي في مساحة الاسم الخاصة بي؟أستخدم فئة - antlr.collections.AST - كنوع الإرجاع لوظيفة تنتمي إلى فئة في مساحة الاسم الخاصة بي؛ونتيجة لذلك، يجب على المستخدم أن يكون

using antlr.collections;
using myNamespace;

في الجزء العلوي من ملفاتهم من أجل استخدام وظيفتي.هل يمكنني جعل myNamespace.AST اسمًا مستعارًا لـ antlr.collections.AST، بحيث يتعين على المستخدم فقط أن يكون لديه

using myNamespace;

في الجزء العلوي من ملفاتهم؟

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

المحلول

ضع في اعتبارك أن مستهلكي الكود الخاص بك لن يفعلوا ذلك في الواقع يحتاج أن يكون باستخدام البيانات.هذه موجودة لتسهيل حياتهم، لذلك لا يتعين عليهم كتابة antlr.collections.Foo وantlr.collections.Bar في جميع أنحاء مصدرهم.

"التأثير" الأكبر (إذا كان هناك بالفعل تأثير شديد) هو أن مستهلك الكود الخاص بك سيحتاج إلى مرجع ثابت للتجميع حيث يتم تعريف antlr.collections.

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

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

نصائح أخرى

ماذا عن اشتقاق فئة باستخدام نفس الاسم في مساحة الاسم الجديدة؟قصدت:

namespace MyForms {
    class Class1 : Some.Other.Namespace.Class1 {
        // ...
    }
}

قم بإنشاء فئة جديدة ترث الفئة في مساحة الاسم الجديدة الخاصة بك.إنها ليست مثالية، ولكنها مفيدة لاختبار الوحدة وما شابه.

يجب أن تفكر في سبب قيامك بذلك، حيث يتم تقسيم الفئات إلى مساحات أسماء لسبب ما.

لا، لا يمكنك ذلك.

يعد المسار الكامل للفئة واسمها جزءًا من هويتها.

إذا قمت بالاشتقاق من الفئة وقمت بإرجاع الفئة المشتقة الخاصة بك، فسوف تجعل نفسك مسؤولاً عن توفير جميع الوثائق الخاصة بنوع الإرجاع.

أعتقد أنك ستتسبب في ضرر للمطورين الذين يستخدمون مكتبتك لأنهم لن يعرفوا بالضرورة أن ما يعملون معه حقًا هو نوع من antir.collections (لا يعني ذلك أنني أعرف حتى ما هو، لكن هذا ليس كذلك) النقطة).إذا جاء المطور إلى StackOverflow.com بحثًا عن معلومات حول نوع الإرجاع هذا، فهل من المرجح أن يعثر على معلومات إذا كان النوع من مكتبة "مشتركة" أو من مكتبتك؟

الحل الوحيد هو إخفاء التبعية الكاملة للنوع antlr.collections.AST.

يمكنك استخدام مشترك كهربائي لهذا الغرض.

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