# C#-tuki Maguyva-palvelussa: turvallisempia refaktorointeja .NET-koodikannoille

Canonical source: https://maguyva.ai/fi/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 tukee C#:ia AST-jäsennyksellä ja symbolien poiminnalla, jotta tekoälyagentit voivat työskennellä .NET-palveluiden, LINQ-painotteisen liiketoimintalogiikan, jaettujen kirjastojen ja pitkäikäisten yritysrepositorioiden parissa.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .cs, .csx
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- ASP.NET-, worker-service- ja sisäiset alustarepositoriot, jotka yhdistävät web-päätepisteitä, työtehtäviä ja jaettuja kirjastoja.
- Tiimit, jotka ylläpitävät kypsiä .NET-ympäristöjä, joissa LINQ, asynkroniset kulut ja frameworkin abstraktiot piilottavat todellisen suorituspolun.
- Tiimit, jotka testaavat, pysyykö agentti perustellulla pohjalla kerroksellisessa .NET-koodissa ennen liiketoimintalogiikan uudelleenkirjoitusta.

## Agenttien työnkulut

- Seuraa controller-, service- ja repository-polkua ennen liiketoimintalogiikan muokkaamista.
- Tarkista, missä mallia, DTO:ta tai jaettua apuohjelmaa instansioidaan koko repositoriossa.
- Ymmärrä ympäröivät LINQ- tai asynkroniset mallit ennen kuin annat agentin kirjoittaa mitään uudelleen.

## Mikä merkitsee kypsissä .NET-koodikannoissa

Monet tekoälytyökaluja käyttävät tiimit elävät .NET:ssä, eivät uusissa JavaScript-projekteissa. Heillä on API:ta, worker-prosesseja, jaettuja malleja, sisäisiä kirjastoja ja vuosien liiketoimintalogiikkaa. Kysymys ei ole siitä, osaako LLM tuottaa C#-syntaksia. Kysymys on siitä, pysyykö se perustellulla pohjalla repositoriossa, jossa yksi väärä muokkaus voi heijastua palveluihin, malleihin ja jaettuihin abstraktioihin.

Siksi C#-sivun täytyy olla tarkempi kuin "tuettu".

## Mitä Maguyva todella poimii C#:sta

Maguyva normalisoi `using`-tuonnit, poistaa nullable- ja taulukkopäätteet, kuten `?` ja `[]`, määrittelyistä ja käsittelee konstruktorin kaltaisia kutsusolmuja instansiointeina poistaen samalla geneeristen tyyppien kulmasulkeet. Nämä ovat hyödyllisiä yksityiskohtia luokkapainotteisissa C#-repositorioissa, koska ne pitävät graafin siistimpänä todellisten toimialuetyyppien ympärillä.

Asetukset myös suodattavat paljon BCL- ja LINQ-kohinaa. Tämä merkitsee enemmän kuin miltä kuulostaa. Kypsissä .NET-koodikannoissa framework-kutsujen hallitsema graafi ei ole kovin hyödyllinen. Hyödyllinen graafi on se, jossa repositoriokohtaiset controllerit, palvelut, DTO:t ja apuluokat yhä erottuvat.

## Hyödyllisiä MCP-työnkulkuja .NET-koodikannoille

Käytännön kulku alkaa yleensä tästä:

- `find_symbol`, kun tiedät controllerin, palvelun, DTO:n tai mallin nimen.
- `dependency_search` ennen jaetun palvelun tai tyypin muokkaamista, jolla saattaa olla paljon käyttökohteita muualla koodissa.
- `get_task_context` kehotteille kuten "seuraa tätä pyyntöä controllerista repositoryyn", kun polku ulottuu useiden kerrosten yli.

## Milloin tämä sivu on hyödyllinen

Tämä sivu on tarkoitettu tiimeille, jotka haluavat tekoälyapua todellisessa .NET-koodikannassa, ei vain leikkiprojektissa. Jos ympäröivä järjestelmä on enemmän JVM- kuin .NET-painotteinen, vertaa [Javaan](/fi/languages/java). Jos C#-kerroksesi on vain yksi osa suurempaa polyglot-järjestelmää, viereinen [TypeScript](/fi/languages/typescript)-sivu on yleensä myös relevantti.

## Moottorin yksityiskohdat

- `using`-etuliitteet normalisoidaan tuonneissa, ja nullable- tai taulukkojälkiliitteet kuten `?` ja `[]` poistetaan symbolimäärittelyistä.
- Instansiointi käyttää kutsusolmuja geneeristen kulmasulkeiden poistolla, mikä auttaa pitämään konstruktorimaisen käytön luettavana graafissa.
- Konfiguraatio suodattaa nimenomaisesti suuren määrän BCL- ja LINQ-kohinaa, jotta repokohtaiset palvelut ja mallit on helpompi nostaa esiin.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Käytä sitä, kun tiedät controllerin, palvelun, DTO:n tai jaetun tyypin nimen, jota olet koskettamassa.
- `dependency_search`: Käytä saapuvaa läpikäyntiä ennen sovelluksen laajuudelta käytetyn ydinpalvelun tai mallin muokkaamista.
- `get_task_context`: Hyödyllinen prompteille kuten “seuraa tätä pyyntöä kontrollerista repositoriokerrokseen” kerroksisissa .NET-koodikannoissa.
