كيف يمكنني الرجوع إلى رسم تخطيطي في قالب DSL T4؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

جوجل لن يأتي لإنقاذي هنا، وأنا فقط يعرف هذا هو المكان المثالي للسؤال.

أقوم بكتابة معالج DirectiveProcessor مخصص لخط المشترك الرقمي (DSL) وأريد أن أتمكن من الوصول إلى رسم تخطيطي من داخل قالب T4 الخاص بي.

ضمن DirectiveProcessor، قمت بتحميل نموذج المجال والرسم التخطيطي الخاص بي باستخدام (انتظر...) LoadModelAndDiagram(...).

لذا، تم الآن تحميل الرسم التخطيطي في القسم الافتراضي في المتجر، لكن لا يمكنني طوال حياتي معرفة كيفية حل الإشارة إليه لاحقًا.

يمكن لأي شخص أن يرشد الطريق؟

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

المحلول

حسنًا، بعد الكثير من العمل الإضافي، قررت أنني لست بحاجة إلى الوصول إلى الرسم التخطيطي الخاص بي **من داخل** معالج التوجيه المخصص.

لا يزال لدي معالج DirectiveProcessor مخصص لأن المعيار الذي تم إنشاؤه لا يقوم بتحميل الرسم التخطيطي الحالي عندما يقوم بتحميل نموذج المجال.

يعد الحصول على معالج DirectiveProcessor مخصصًا لتحميل الرسم التخطيطي والنموذج في نفس الوقت أمرًا سهلاً للغاية.يمكنك إنشاء فئة فرعية للفئة الأساسية DirectiveProcessor القياسية وتجاوزها:

protected override bool LoadDiagramData
{
    get
    {
        return true;
    }
}

لقد قمنا الآن بتحميل المخطط، لذا لنعود إلى السؤال الأصلي، كيف يمكننا الوصول إليه؟مثله:

using (Transaction t = partition.Store.TransactionManager
           .BeginTransaction("MyTxn", true))
{
    MyDslDiagram diagram = partition.ElementDirectory
        .FindElements<MyDslDiagram>(true).SingleOrDefault();

    /*
     * Now, do stuff with your diagram.
     *
     */
}

الآن، يعمل هذا الرمز بشكل جيد إذا كان لديك رسم تخطيطي تم تحميله.إذا لم تفعل ذلك، رسم بياني سوف يعود كما باطل, ، وفي هذه الحالة، يتعين علينا إما تحميل المخطط بشكل صريح أو إنشاء مخطط ديناميكيًا.

لن أخوض في ذلك، هنا.ربما على مدونتي عندما حصلت على بعض النوم!

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