أفضل نهج للتمويل على أنواع العقدة وإجراءات السياق في أشكال TreeView

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

سؤال

أنا أعمل على وظيفة Visual Studio الوظيفة الإضافية ل Visual Studio 2008 والتي تعرض TreeView يوفر عرضا على المحتوى في منتج خادم. يحتوي منتج الخادم على أنواع مختلفة من العقد، وكل عقدة لديها نوع من قائمة السياق الخاصة به (انقر بزر الماوس الأيمن من قائمة).

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

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

المحلول

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

تتمثل إحدى خصائص InodeType هي خاصية ContextMenu التي تقوم بإرجاع قائمة سياق نماذج Windows.

في التعليمات البرمجية الخاصة بك جعل الخاصية:

[Import("NodeTypes", typeof(INodeType))]
public IEnumerable<INodeType> extensionNodeTypes { get; set; }

يمكنك التعداد من خلال ذلك بعد أن تتكون.

في رمز البرنامج المساعد، فإنهم سيحددون أنواع العقدة الجديدة شيئا مثل هذا (قد لا يترجم):

[Export("NodeTypes", typeof(INodeType))]
public class SomeNodeType : AbstractNodeType
{
    public SomeNodeType()
    {
        this.ContextMenu = base.BuildContextMenu(/* ... */);
        /* etc. */
    }
    /* ... other custom logic ... */
}

آمل أنني لم أفوض بناء الجملة، لكن هذه هي الفكرة العامة.

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