سؤال

وأنا أحاول خلق نوع من السيد / UI التفاصيل باستخدام نمط MVP. لدي المشتبه بهم المعتادين:

interface IMainView{}
class MainView: Form, IMainView{}

interface IMainPresenter{}
class MainPresenter{}

// Numerous domain objects

ولدي أيضا على UserControl الذي هو أيضا عرض له من ثالوث MVP الخاصة:

interface ISubView{}
class SubView: UserControl, ISubView{}

interface ISubPresenter{}
class SubPresenter{}

ووMainPresenter يخلق ومثيل SubPresenter، والذي بدوره يخلق مثيل SubView. مشكلتي هي آراء لا تحتوي على إشارات إلى بعضها البعض أو حتى يعرف كل الوجود الآخرين. انهم يعرفون فقط حول العروض الخاصة بهم ولكن أريد أن نعلق واحد مفاده أن هو UserControl إلى رأي آخر وهذا هو النموذج. هل هذا ممكن القيام به، ولا تزال تحافظ على الجهل كل عرض من بعضها البعض؟

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

وبلدي الأسباب للقيام بذلك هو MainView يقدم للمستخدم مع مجموعة من الكائنات. كل كائن يمكن أن يكون واحدا من عدة (أكثر من 50) فئات مختلفة. كل ستنفذ واجهة المشتركة ولكن واجهة المستخدم لمعالجة كل كائن سوف تختلف مع الطبقة الأساسية.

وبالمناسبة، هذا هو تطبيق WinForms عناصر تستهدف الصافي 2.0 (انها جمعت كما C # 3.0 على الرغم من)

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

المحلول

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

subView
  |
  V
subPresenter
  |
  V
mainPresenter
  |
  V
mainView

ولقد مرت ككائن سهل القديمة حتى أيا من العروض تحتاج إلى تضمين كل ما يشير إلى مساحة الاسم WinForms عناصر. وmainView ببساطة يفترض بها المتوفي من UserControl ويلقي على هذا النحو.

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