سؤال

لدي سؤال حول خصائص شكل فئة DSL.

أنشأت نوعًا من أداة DSL.أريد أن يكون لدي وظيفة تشبه إلى حد ما في مخطط الفصل.

لدي أشكال في نموذجي.لدي شكل فئة مع جزء مقصورة للسمات والعمليات. في النموذج لدي فئة السمة وفئة العملية.

لقد أنشأت خاصية "NameAndType" و "Name" و "Type" لـ atributtes كما في الكتاب "تطوير خاص بالمجال باستخدام أدوات Visual Studio DSL. ستيف كوك ، جاريث جونز ، ستيوارت كينت ، آلان كاميرون ويلز "في صفحة 404.

إنه يعمل بشكل رائع ولكني أريد الحصول على قائمة ديناميكية للمعلمات في فئة العمليات.نوع من ممتلكات المجموعات.

الآن أريد إنشاء خاصية NameAndType Collections للإصدارات.أرغب في اختيار عدد المعلمات التي أريد استخدامها في عمليتي (الطريقة).يجب أن تكون قائمة ديناميكية (نوع من المجموعة)

هل تعرف كيف يمكنني القيام بذلك؟

تحياتي آدم

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

المحلول

لقد قمت بحل مشكلتي

أكتب هذا في هذا المنتدى. أعتقد أنه قد يكون مفيدًا للآخرين. أ

فيما يلي الحل الذي أقدمه:

لذلك ، أردت إنشاء محرر المجموعة الخاص بي مثل خاصية في فئة المجال (مثل NameTypeList)

لقد أنشأت ساحرة فئة مخصصة بها حقلين (سلسلة _name ، سلسلة _ نوع) ولديها محاضر ومحددات لهذه الحقول. هذه فئة NameType. يمكننا رؤية رمز هذه الفئة أدناه (يوجد أدناه رمز هذه الفئة): Genacodicetagpre

هذه الفئة موجودة في مساحة الاسم الرئيسية لمشروع Dsl.

بعد ذلك ، سنستخدم فئة System.ComponentModel.Design.CollectionEditor ، لذلك نحتاج إلى إضافة System.Design مرجعي إلى مشاريع Dsl و DslPackage الخاصة بنا.

لذلك ، يمكننا إنشاء محرر مخصص لممتلكاتنا في فئة المجال. علينا إنشاء فئة محرر في جزء رمز مخصص في مشروع Dsl الخاص بنا. يمكننا القيام بذلك باستخدام الكود أدناه: Genacodicetagpre

الآن ، يجب أن نضيف النوع المخصص في مشروع Dsl. يمكننا القيام بذلك عن طريق النقر فوق زر الماوس الأيسر في DSL Explorer على جذر الشجرة وتحديد "إضافة نوع خارجي جديد".

بعد ذلك ، يتعين علينا ملء الاسم كـ "قائمة" ومساحة الاسم كـ "System.Collections.Generic". لذلك لدينا نوع جديد كقائمة عامة للكائنات من فئة NameType المخصصة لدينا.

بعد ذلك ، يتعين علينا تحديد خاصية جديدة فقط في فئة المجال الخاصة بنا (على سبيل المثال في DslDefinition Designer بالنقر فوق زر الماوس الأيمن على فئة المجال واختيار Add-> DomainProperty)

في الخصائص ، يتعين علينا تحديد الاسم مثل NameTypeList ، واختيار Type as List ، واختيار Kind as CustomStorage وتعيين السمات المخصصة مثل System.ComponentModel.Editor {typeof (NameTypeEditor) ، typeof (System.Drawing.Design.UITypeEditor)}

في النهاية ، يتعين علينا تحديد طرق CustomStorage الخاصة بنا لقائمة NameTypeList الخاصة بنا والتي نختارها في فئة المجال.

يمكننا القيام بذلك عن طريق إنشاء فئة جزئية من فئة المجال هذه وكتابة أساليب GetNameTypeListValue و SetNameTypeListValue.

Genacodicetagpre

لدينا الآن Collection Property NameTypeList ويمكننا تعديل قائمة قيم NameType الخاصة بنا بطريقة سهلة.

قم بتحويل كل شيء وبنائه وتشغيله

لقد قمت بحل هذه المشكلة بهذه الطريقة. آمل أن تساعدك هذه النصيحة.

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