# Hỗ trợ C# trong Maguyva: Refactor an toàn hơn cho codebase .NET

Canonical source: https://maguyva.ai/vi/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 hỗ trợ C# với phân tích cú pháp AST và trích xuất symbol, giúp AI agent làm việc xuyên suốt các service .NET, logic nghiệp vụ nặng LINQ, thư viện dùng chung, và các repo doanh nghiệp tồn tại lâu dài.

## Tổng quan hỗ trợ

- Cấp độ: Hỗ trợ AST và symbol
- Lập trình
- Phần mở rộng: .cs, .csx
- Phân tích AST thật cho tìm kiếm nhận biết cú pháp và context cấu trúc.
- Các symbol có tên cung cấp dữ liệu cho tra cứu ngữ nghĩa và tham chiếu chéo. Điều hướng đồ thị khả dụng khi bật trích xuất quan hệ.
- Ngôn ngữ này đóng góp symbol và quan hệ cho tìm kiếm nhận biết đồ thị; các loại edge được hỗ trợ thay đổi theo cấu trúc riêng của ngôn ngữ.
- Cả phân tích AST và trích xuất symbol đều khả dụng.

## Phù hợp nhất

- Các repo ASP.NET, worker-service, và nền tảng nội bộ pha trộn giữa endpoint web, job, và thư viện dùng chung.
- Các đội duy trì hệ thống .NET đã trưởng thành, nơi LINQ, luồng async, và các lớp trừu tượng của framework che giấu đường thực thi thực sự.
- Các đội kiểm tra xem một agent có thể bám sát mã .NET nhiều tầng thực tế trước khi viết lại logic nghiệp vụ hay không.

## Workflow agent

- Theo dõi đường đi qua controller, service, và repository trước khi chỉnh sửa logic nghiệp vụ.
- Kiểm tra nơi một model, DTO, hoặc tiện ích dùng chung được khởi tạo trong toàn bộ repo.
- Hiểu các mẫu LINQ hoặc async xung quanh trước khi để agent viết lại bất cứ điều gì.

## Điều gì quan trọng trong các codebase .NET trưởng thành

Rất nhiều đội dùng công cụ AI sống trong thế giới .NET, chứ không phải JavaScript greenfield. Họ có API, worker process, model dùng chung, thư viện nội bộ, và nhiều năm logic nghiệp vụ. Câu hỏi không phải là liệu một LLM có thể sinh ra cú pháp C# hay không. Câu hỏi là liệu nó có thể bám sát mã nguồn thực tế trong một repo, nơi một chỉnh sửa sai có thể lan tỏa qua các service, model, và lớp trừu tượng dùng chung.

Đó là lý do một trang C# cần cụ thể hơn là chỉ nói "được hỗ trợ."

## Maguyva thực sự trích xuất những gì trong C#

Maguyva chuẩn hóa các import `using`, loại bỏ hậu tố nullable và mảng như `?` và `[]` khỏi các định nghĩa, và xem các node gọi kiểu constructor như những lần khởi tạo trong khi loại bỏ dấu ngoặc góc bao quanh tham số kiểu generic. Đây là những chi tiết hữu ích trong các repo C# nặng về class, vì chúng giúp đồ thị gọn gàng hơn quanh các kiểu miền (domain type) thực sự.

Cấu hình cũng lọc bớt rất nhiều nhiễu từ BCL và LINQ. Điều này quan trọng hơn bạn có thể nghĩ. Trong các codebase .NET trưởng thành, một đồ thị bị chi phối bởi các lệnh gọi framework không hữu ích lắm. Đồ thị hữu ích là đồ thị nơi các controller, service, DTO, và lớp hỗ trợ đặc thù của repo vẫn nổi bật.

## Các quy trình MCP hữu ích cho codebase .NET

Luồng thực tế thường bắt đầu với:

- `find_symbol` khi bạn đã biết tên controller, service, DTO, hoặc model.
- `dependency_search` trước khi chỉnh sửa một service hoặc kiểu dùng chung có thể có nhiều lượt gọi đến từ nơi khác.
- `get_task_context` cho các prompt kiểu "theo dõi request này từ controller đến repository" khi đường đi trải dài qua nhiều tầng.

## Khi nào trang này hữu ích

Trang này dành cho các đội muốn có sự hỗ trợ AI bên trong một codebase .NET thực sự, không chỉ là một dự án đồ chơi. Nếu hệ thống xung quanh thiên về JVM hơn là .NET, hãy so sánh với [Java](/vi/languages/java). Nếu lớp C# của bạn chỉ là một phần trong một hệ thống đa ngôn ngữ lớn hơn, trang [TypeScript](/vi/languages/typescript) liền kề thường cũng liên quan.

## Chi tiết engine

- Tiền tố `using` được chuẩn hóa trên các import, và các hậu tố nullable hay array như `?` và `[]` bị loại bỏ khỏi định nghĩa symbol.
- Việc khởi tạo được nhận diện từ các node lời gọi sau khi loại bỏ dấu ngoặc góc của kiểu generic, giúp cách dùng giống constructor vẫn dễ đọc trong đồ thị.
- Cấu hình lọc rõ ràng một lượng lớn nhiễu BCL và LINQ để các service và model đặc thù của repository dễ nổi lên hơn.

## Điểm khởi đầu MCP hữu ích

- `find_symbol`: Dùng nó khi bạn biết tên controller, service, DTO, hay kiểu dùng chung mà bạn sắp động vào.
- `dependency_search`: Dùng duyệt incoming trước khi chỉnh sửa một service hay model lõi được dùng khắp ứng dụng.
- `get_task_context`: Hữu ích cho các prompt như “theo dõi request này từ controller đến repository” trong các codebase .NET phân lớp.
