# دعم Maguyva للغة C#: إعادة هيكلة أكثر أمانًا لقواعد كود .NET

Canonical source: https://maguyva.ai/ar/languages/csharp

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

يدعم Maguyva لغة C# عبر تحليل AST واستخلاص الرموز، بحيث يستطيع وكلاء الذكاء الاصطناعي العمل عبر خدمات .NET، ومنطق الأعمال كثيف الاستخدام لـLINQ، والمكتبات المشتركة، والمستودعات المؤسسية طويلة العمر.

## لمحة عن الدعم

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .cs, .csx
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

- مستودعات ASP.NET وخدمات العامل (worker-service) والمنصات الداخلية التي تمزج بين نقاط نهاية الويب والمهام والمكتبات المشتركة.
- الفرق التي تصون منظومات .NET الناضجة حيث تُخفي LINQ وتدفقات async وتجريدات الإطار مسار التنفيذ الحقيقي.
- الفرق التي تختبر ما إذا كان بإمكان الوكيل البقاء مرتكزًا في كود .NET متعدد الطبقات قبل إعادة كتابة منطق الأعمال.

## سير عمل الوكلاء

- تتبّع مسار وحدة التحكم (controller) والخدمة والمستودع قبل تعديل منطق الأعمال.
- فحص أين يتم إنشاء نموذج أو DTO أو أداة مساعدة مشتركة عبر المستودع.
- فهم أنماط LINQ أو async المحيطة قبل السماح للوكيل بإعادة كتابة أي شيء.

## ما الذي يهم في قواعد كود .NET الناضجة

الكثير من الفرق التي تستخدم أدوات الذكاء الاصطناعي تعيش في .NET، لا في JavaScript الناشئة من الصفر. لديها واجهات برمجية (APIs)، وعمليات عامل (worker)، ونماذج مشتركة، ومكتبات داخلية، وسنوات من منطق الأعمال. السؤال ليس ما إذا كان بمقدور LLM إصدار صياغة C#. السؤال هو ما إذا كان بمقدوره البقاء مرتكزًا داخل مستودع حيث يمكن لتعديل واحد خاطئ أن يمتد أثره عبر الخدمات والنماذج والتجريدات المشتركة.

لهذا يجب أن تكون صفحة C# أكثر تحديدًا من مجرد "مدعومة".

## ما الذي يستخلصه Maguyva فعليًا في C#

يُطبِّع Maguyva استيرادات `using`، ويُزيل لواحق القابلية للقيمة الفارغة (nullable) والمصفوفات مثل `?` و`[]` من التعريفات، ويعامل عُقد الاستدعاء الشبيهة بالمُنشئ كعمليات إنشاء مع إزالة أقواس معاملات الأنواع العامة. هذه تفاصيل مفيدة في مستودعات C# كثيفة الأصناف لأنها تجعل الرسم البياني أنظف حول أنواع مجال الأعمال الفعلية.

كما يُصفِّي الإعداد قدرًا كبيرًا من ضجيج مكتبة BCL وLINQ. وهذا أهم مما يبدو عليه. ففي قواعد كود .NET الناضجة، لا يكون الرسم البياني المهيمَن عليه باستدعاءات الإطار مفيدًا كثيرًا. الرسم البياني المفيد هو ذلك الذي تبرز فيه وحدات التحكم والخدمات وDTOs والأصناف المساعدة الخاصة بالمستودع.

## سير عمل MCP مفيد لقواعد كود .NET

يبدأ التدفق العملي عادةً بـ:

- `find_symbol` عندما تعرف اسم وحدة التحكم أو الخدمة أو DTO أو النموذج.
- `dependency_search` قبل تعديل خدمة أو نوع مشترك قد تعتمد عليه أجزاء كثيرة من الكود.
- `get_task_context` لطلبات مثل "تتبّع هذا الطلب من وحدة التحكم إلى المستودع" عندما يمتد المسار عبر عدة طبقات.

## متى تكون هذه الصفحة مفيدة

هذه الصفحة مخصصة للفرق التي تريد مساعدة ذكاء اصطناعي داخل قاعدة كود .NET حقيقية، لا مجرد مشروع تجريبي. إذا كان النظام المحيط أقرب إلى JVM منه إلى .NET، قارنه بـ[Java](/ar/languages/java). وإذا كانت طبقة C# لديك مجرد جزء واحد من نظام متعدد اللغات أكبر، فصفحة [TypeScript](/ar/languages/typescript) المجاورة عادةً ما تكون ذات صلة أيضًا.

## تفاصيل المحرك

- تُطبَّع بادئات `using` في عمليات الاستيراد، وتُزال اللواحق القابلة للقيمة الفارغة (nullable) أو لواحق المصفوفات مثل `?` و`[]` من تعريفات الرموز.
- يستخدم إنشاء النُسخ عُقَد الاستدعاء مع إزالة أقواس الأنواع العامة، ما يساعد على إبقاء الاستخدام الشبيه بالمُنشِئات مقروءًا في الرسم البياني.
- يُصفّي الإعداد صراحةً كمًّا كبيرًا من ضجيج مكتبة BCL وLINQ، بحيث يسهُل إظهار الخدمات والنماذج الخاصة بالمستودع.

## نقاط دخول مفيدة عبر MCP

- `find_symbol`: استخدمه حين تعرف اسم المتحكّم، أو الخدمة، أو DTO، أو النوع المشترك الذي توشك على لمسه.
- `dependency_search`: استخدم الاجتياز الوارد قبل تحرير خدمة أو نموذج أساسي مستخدَم عبر التطبيق.
- `get_task_context`: مفيد لمطالبات مثل "تتبّع هذا الطلب من المتحكّم إلى المستودع" في قواعد شيفرة .NET متعددة الطبقات.
