# Wsparcie dla C# w Maguyva: bezpieczniejsze refaktoryzacje w bazach kodu .NET

Canonical source: https://maguyva.ai/pl/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 obsługuje C# dzięki parsowaniu AST i ekstrakcji symboli, dzięki czemu agenci AI mogą pracować w usługach .NET, logice biznesowej intensywnie korzystającej z LINQ, współdzielonych bibliotekach oraz długowiecznych repozytoriach klasy enterprise.

## Migawka wsparcia

- Poziom: Obsługa AST i symboli
- Programowanie
- Rozszerzenia: .cs, .csx
- Prawdziwe parsowanie AST dla wyszukiwania świadomego składni i kontekstu strukturalnego.
- Nazwane symbole zasilają wyszukiwanie semantyczne i wzajemne odwołania. Nawigacja po grafie jest dostępna po włączeniu ekstrakcji relacji.
- Ten język dostarcza symbole i relacje do wyszukiwania uwzględniającego graf; obsługiwane typy krawędzi zależą od jego rodzimych konstrukcji.
- Dostępne są zarówno parsowanie AST, jak i ekstrakcja symboli.

## Najlepsze dopasowanie

- Repozytoria ASP.NET, usług roboczych (worker-service) i wewnętrznych platform, które łączą endpointy webowe, zadania i współdzielone biblioteki.
- Zespoły utrzymujące dojrzałe środowiska .NET, w których LINQ, przepływy asynchroniczne i abstrakcje frameworka ukrywają rzeczywistą ścieżkę wykonania.
- Zespoły sprawdzające, czy agent potrafi opierać się na rzeczywistej strukturze warstwowego kodu .NET, zanim przepisze logikę biznesową.

## Workflow agentów

- Prześledź ścieżkę kontrolera, usługi i repozytorium przed edycją logiki biznesowej.
- Sprawdź, gdzie model, DTO lub współdzielone narzędzie jest tworzone (instancjonowane) w całym repozytorium.
- Zrozum otaczające wzorce LINQ lub asynchroniczne, zanim pozwolisz agentowi cokolwiek przepisać.

## Co ma znaczenie w dojrzałych bazach kodu .NET

Wiele zespołów korzystających z narzędzi AI pracuje w .NET, a nie w JavaScript pisanym od zera. Mają API, procesy robocze, współdzielone modele, wewnętrzne biblioteki i lata logiki biznesowej. Pytanie nie brzmi, czy LLM potrafi wygenerować składnię C#. Pytanie brzmi, czy potrafi opierać się na rzeczywistym kodzie repozytorium, w którym jedna zła edycja może rozejść się falą przez usługi, modele i współdzielone abstrakcje.

Dlatego strona o C# musi być bardziej konkretna niż „obsługiwane”.

## Co Maguyva faktycznie ekstrahuje w C#

Maguyva normalizuje importy `using`, usuwa z definicji sufiksy nullable i tablicowe, takie jak `?` i `[]`, oraz traktuje węzły wywołań przypominające konstruktory jako instancjonowanie, jednocześnie usuwając nawiasy kątowe parametrów generycznych. To przydatne szczegóły w repozytoriach C# bogatych w klasy, ponieważ czynią graf czystszym wokół rzeczywistych typów domenowych.

Konfiguracja odfiltrowuje też sporo szumu z BCL i LINQ. To ma większe znaczenie, niż się wydaje. W dojrzałych bazach kodu .NET graf zdominowany przez wywołania frameworka niewiele pomaga. Przydatny jest graf, w którym wciąż wyróżniają się kontrolery, usługi, DTO i klasy pomocnicze specyficzne dla repozytorium.

## Przydatne przepływy pracy MCP dla baz kodu .NET

Praktyczny przepływ zwykle zaczyna się od:

- `find_symbol`, gdy znasz nazwę kontrolera, usługi, DTO lub modelu.
- `dependency_search` przed edycją współdzielonej usługi lub typu, z którego może korzystać wiele innych komponentów.
- `get_task_context` dla zapytań typu „prześledź to żądanie od kontrolera do repozytorium”, gdy ścieżka obejmuje kilka warstw.

## Kiedy ta strona jest przydatna

Ta strona jest dla zespołów, które chcą pomocy AI wewnątrz prawdziwej bazy kodu .NET, a nie tylko projektu zabawkowego. Jeśli otaczający system jest bardziej JVM niż .NET, porównaj z [Java](/pl/languages/java). Jeśli Twoja warstwa C# jest tylko jedną częścią większego systemu wielojęzycznego, zwykle przydatna jest też sąsiednia strona [TypeScript](/pl/languages/typescript).

## Szczegóły silnika

- Prefiksy `using` są normalizowane w importach, a przyrostki nullable albo tablicowe, takie jak `?` i `[]`, są usuwane z definicji symboli.
- Ekstrakcja instancjonowania wykorzystuje węzły wywołań po usunięciu nawiasów kątowych parametrów generycznych, co pomaga zachować czytelność użycia przypominającego konstruktor w grafie.
- Konfiguracja jawnie odfiltrowuje duże ilości szumu z BCL i LINQ, żeby łatwiej było wydobyć usługi i modele specyficzne dla repozytorium.

## Przydatne punkty wejścia MCP

- `find_symbol`: Użyj, kiedy znasz nazwę kontrolera, usługi, DTO albo współdzielonego typu, który zamierzasz dotknąć.
- `dependency_search`: Użyj przechodzenia po relacjach przychodzących przed edycją głównej usługi albo modelu używanego w całej aplikacji.
- `get_task_context`: Przydatne dla poleceń takich jak „prześledź to żądanie od kontrolera do repozytorium” w warstwowych bazach kodu .NET.
