التحكم في تنسيق إخراج رمز Codemodel: وضع الخطوط بين إعلانات مساحة الاسم

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

سؤال

أقوم ببعض التجارب مع Codemodel في Visual Studio. حاولت إنشاء ملف مع مساحين أسماء هناك من خلال نموذج رمز VS:

CodeModel codeModel = projItem.ContainingProject.CodeModel;
codeModel.AddNamespace("Namespaces.FirstNamespace", "namespacestest.cs");
codeModel.AddNamespace("Namespaces.SecondNamespace", "namespacestest.cs");

إخراج هذا الرمز هو:

//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}
namespace Namespaces.SecondNamespace {
}

الذي تقريبيا ما أبحث عنه. الصيد الوحيد هنا هو أنني أود التحكم في التباعد: وجود سطر واحد على الأقل بين مساحة الاسم الأولى والثانية. هل عن طريق الصدفة يعرف أي شخص طريقة لتحقيق هذا؟

هذا ما أريده:

//file namespacestest.cs
namespace Namespaces.FirstNamespace {
}

namespace Namespaces.SecondNamespace {
}

شكرًا

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

المحلول

البيان codeModel.AddNamespace سيعود لك كائن من المساحات الترفيهية. يمكنك العثور على نقطة تحرير مساحة الاسم باستخدام مساحة الاسم الأولى ثم إدراج سطر مثل هذا.

CodeNamespace yournamespace = codeModel.AddNamespace(....);
EditPoint2 endEditPoint = yournamespace.GetEndPoint(vsCMPart.vsCMPartWhole).CreateEditPoint();
endEditPoint.InsertNewLine(1);

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

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