سؤال

هذا هو في الغالب طلب للتعليقات إذا كان هناك سبب يجب علي ليس السير في هذا الطريق.

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

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

المحلول

إنها طريقة معقولة جدا للقيام بذلك (لقد فعلت شيئا مشابها للغاية من قبل) - ولكن هناك دائماً سقوط:

  • سيحتاج أي قانون يحتاج إلى الكيان إلى مرجع إضافي (على افتراض أن السمة والكيان في مجالات مختلفة)
  • يجب تحديد القيم (إلا إذا كنت ذكيا حول هذا الموضوع) في وقت الترجمة
  • لا يمكنك استخدامه على كيانات خارج سيطرتك

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

نصائح أخرى

لا يوجد سبب متأصل لتجنب السمات المخصصة. إنها ميزة CLR مدعومة وهي العمود الفقري للعديد من المنتجات المتاحة (عقود التعليمات البرمجية، FXCOP، إلخ ...).

هذا ليس نهجا غير معقول وأكثر صحة من الخبز هذه الأشياء في مستوى UI. هناك بضعة نقاط تستحق النظر قبل تناول الغوص الكامل:

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

مجرد كونه دافع الشياطين حقا، بشكل عام للحصول على تطبيق بسيط إلى حد ما حيث يمكنك فقط تهتم بالحقول المطلوبة، وهذه طريقة مرتبة جدا للقيام بذلك

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