# Maguyva में C# सपोर्ट: .NET कोडबेस के लिए सुरक्षित रीफ़ैक्टर

Canonical source: https://maguyva.ai/hi/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, AST पार्सिंग और सिंबल एक्सट्रैक्शन के साथ C# को सपोर्ट करता है, ताकि AI एजेंट .NET सर्विसेज़, LINQ-भारी बिज़नेस लॉजिक, साझा लाइब्रेरी, और लंबे समय से चल रहे एंटरप्राइज़ रिपॉज़िटरी में काम कर सकें।

## सपोर्ट स्नैपशॉट

- टियर: AST और सिंबल सपोर्ट
- प्रोग्रामिंग
- एक्सटेंशन: .cs, .csx
- सिंटैक्स-अवेयर सर्च और स्ट्रक्चरल कॉन्टेक्स्ट के लिए असली AST पार्सिंग।
- नामित सिंबल सिमेंटिक लुकअप और क्रॉस-रेफ़रेंस को फ़ीड करते हैं। रिलेशनशिप एक्सट्रैक्शन सक्षम होने पर ग्राफ़ नेविगेशन उपलब्ध होता है।
- यह भाषा ग्राफ़-अवेयर सर्च में सिंबल्स और रिलेशनशिप्स जोड़ती है; सपोर्टेड एज प्रकार इसके नेटिव कंस्ट्रक्ट्स के अनुसार बदलते हैं।
- AST पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- ASP.NET, वर्कर-सर्विस, और आंतरिक प्लेटफ़ॉर्म रिपॉज़िटरी जो वेब एंडपॉइंट, जॉब, और साझा लाइब्रेरी को मिलाते हैं।
- परिपक्व .NET एस्टेट को मेंटेन करने वाली टीमें, जहां LINQ, एसिंक फ़्लो, और फ़्रेमवर्क एब्स्ट्रैक्शन असली एक्ज़िक्यूशन पथ को छुपा देते हैं।
- वे टीमें जो यह परखना चाहती हैं कि बिज़नेस लॉजिक को फिर से लिखने से पहले एक एजेंट लेयर्ड .NET कोड में साक्ष्य-आधारित बना रह सकता है या नहीं।

## एजेंट वर्कफ़्लो

- बिज़नेस लॉजिक को एडिट करने से पहले कंट्रोलर, सर्विस, और रिपॉज़िटरी के पथ का अनुसरण करें।
- यह जांचें कि पूरे रिपॉज़िटरी में कोई मॉडल, DTO, या साझा यूटिलिटी कहां-कहां इंस्टैंशिएट होती है।
- एजेंट को कुछ भी फिर से लिखने देने से पहले आस-पास के LINQ या एसिंक पैटर्न को समझें।

## परिपक्व .NET कोडबेस में क्या मायने रखता है

AI टूलिंग इस्तेमाल करने वाली बहुत सी टीमें नए JavaScript प्रोजेक्ट के बजाय मौजूदा .NET सिस्टम पर काम करती हैं। उनके पास API, वर्कर प्रोसेस, साझा मॉडल, आंतरिक लाइब्रेरी, और वर्षों पुराना बिज़नेस लॉजिक होता है। सवाल यह नहीं है कि क्या कोई LLM C# सिंटैक्स लिख सकता है। सवाल यह है कि क्या वह ऐसे रिपॉज़िटरी के भीतर साक्ष्य-आधारित बना रह सकता है जहां एक गलत एडिट सर्विसेज़, मॉडल, और साझा एब्स्ट्रैक्शन में लहर की तरह फैल सकता है।

यही वजह है कि C# पेज को "सपोर्टेड" कहने से कहीं ज़्यादा विशिष्ट होना पड़ता है।

## Maguyva वास्तव में C# में क्या एक्सट्रैक्ट करता है

Maguyva `using` इम्पोर्ट को नॉर्मलाइज़ करता है, परिभाषाओं से nullable और ऐरे सफ़िक्स जैसे `?` और `[]` हटाता है, और जेनरिक ब्रैकेट हटाते हुए कंस्ट्रक्टर-जैसे कॉल नोड्स को इंस्टैंशिएशन मानता है। क्लास-भारी C# रिपॉज़िटरी में ये विवरण उपयोगी हैं क्योंकि ये असली डोमेन टाइप के इर्द-गिर्द ग्राफ को साफ़ बनाते हैं।

कॉन्फ़िग बहुत सारे BCL और LINQ नॉइज़ को भी फ़िल्टर करता है। यह बात जितनी मामूली लगती है, उससे कहीं ज़्यादा महत्वपूर्ण है। परिपक्व .NET कोडबेस में, फ़्रेमवर्क कॉल्स से भरा ग्राफ बहुत उपयोगी नहीं होता। उपयोगी ग्राफ वह है जिसमें रिपॉज़िटरी-विशिष्ट कंट्रोलर, सर्विसेज़, DTO, और हेल्पर क्लासेज़ अब भी अलग से नज़र आती हैं।

## .NET कोडबेस के लिए उपयोगी MCP वर्कफ़्लो

व्यावहारिक फ़्लो आमतौर पर इससे शुरू होता है:

- जब आप कंट्रोलर, सर्विस, DTO, या मॉडल का नाम जानते हों, तो `find_symbol`।
- किसी साझा सर्विस या टाइप को एडिट करने से पहले, जिसका व्यापक इनबाउंड उपयोग हो सकता है, `dependency_search`।
- "इस रिक्वेस्ट को कंट्रोलर से रिपॉज़िटरी तक फ़ॉलो करें" जैसे प्रॉम्प्ट के लिए, जब पथ कई लेयर तक फैला हो, `get_task_context`।

## यह पेज कब उपयोगी है

यह पेज उन टीमों के लिए है जो एक असली .NET कोडबेस के भीतर AI सहायता चाहती हैं, न कि सिर्फ़ किसी टॉय प्रोजेक्ट में। अगर आस-पास का सिस्टम .NET से ज़्यादा JVM है, तो [Java](/hi/languages/java) से तुलना करें। अगर आपकी C# लेयर किसी बड़े पॉलीग्लॉट सिस्टम का सिर्फ़ एक हिस्सा है, तो साथ वाला [TypeScript](/hi/languages/typescript) पेज भी आमतौर पर प्रासंगिक होगा।

## इंजन विवरण

- इम्पोर्ट पर `using` प्रीफ़िक्स नॉर्मलाइज़ किए जाते हैं, और सिंबल डेफिनिशन से `?` और `[]` जैसे nullable या ऐरे सफ़िक्स हटा दिए जाते हैं।
- इंस्टैंशिएशन जेनेरिक-ब्रैकेट स्ट्रिपिंग के साथ कॉल नोड इस्तेमाल करता है, जिससे ग्राफ़ में कंस्ट्रक्टर जैसा इस्तेमाल पठनीय बना रहता है।
- कॉन्फ़िग बड़ी मात्रा में BCL और LINQ नॉइज़ को स्पष्ट रूप से फ़िल्टर करता है ताकि रिपॉज़िटरी-विशिष्ट सर्विस और मॉडल को सामने लाना आसान हो।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: जब आपको उस कंट्रोलर, सर्विस, DTO, या साझा टाइप का नाम पता हो जिसे आप छूने वाले हैं, तब इसका इस्तेमाल करें।
- `dependency_search`: पूरे एप्लिकेशन में इस्तेमाल होने वाली किसी कोर सर्विस या मॉडल को एडिट करने से पहले इनकमिंग ट्रैवर्सल का इस्तेमाल करें।
- `get_task_context`: लेयर्ड .NET कोडबेस में 'कंट्रोलर से रिपॉज़िटरी तक इस अनुरोध का अनुसरण करें' जैसे प्रॉम्प्ट के लिए उपयोगी।
