跳至主要內容
cd /languages
長壽命 .NET程式語言完整圖譜支援

Maguyva 對 C# 的支援:讓 .NET 程式碼庫的重構更安全

Maguyva 透過 AST 剖析與符號擷取支援 C#,讓 AI 代理人得以橫跨 .NET 服務、大量使用 LINQ 的商業邏輯、共用函式庫,以及長期運作的企業儲存庫進行作業。

成熟 .NET 程式碼庫中真正重要的事

許多使用 AI 工具的團隊,身處的是 .NET,而不是全新的 JavaScript 專案。他們擁有 API、工作處理程序、共用模型、內部函式庫,以及累積多年的商業邏輯。問題並不在於 LLM 能不能寫出 C# 語法,而在於它能不能在一個「一次錯誤編輯就可能波及服務、模型與共用抽象層」的儲存庫中,保持扎根於現實。

這正是為什麼一個 C# 頁面,必須比單純一句「支援」說得更具體。

Maguyva 在 C# 中實際擷取了什麼

Maguyva 會正規化 using 引入項目,從定義中去除像 ?[] 這樣的可為 null 與陣列後綴,並在去除泛型括號的同時,將類建構函式形式的呼叫節點視為實例化。這些細節在充滿類別的 C# 儲存庫中相當有用,因為它們能讓圖形在真實領域型別周圍變得更乾淨。

這份設定同時也過濾掉大量的 BCL 與 LINQ 雜訊,這一點比聽起來更重要。在成熟的 .NET 程式碼庫中,一張被框架呼叫主導的圖形,用處其實不大;真正有用的圖形,是那種讓儲存庫專屬的 controller、service、DTO 與輔助類別依然清晰可見的圖形。

對 .NET 程式碼庫有用的 MCP 工作流程

實際的作業流程,通常從以下方式展開:

  • 當你已知 controller、service、DTO 或 model 名稱時,使用 find_symbol
  • 在編輯一個可能有大量呼入使用情形的共用 service 或型別之前,使用 dependency_search
  • 對於像「追蹤這個請求從 controller 到 repository 的路徑」這類、路徑橫跨多個層級的提示,使用 get_task_context

這個頁面適合什麼情境

這個頁面適合那些希望在真實的 .NET 程式碼庫中獲得 AI 協助、而不只是在玩具專案中試用的團隊。如果周邊系統偏向 JVM 而非 .NET,可以與 Java 相互比較。如果你的 C# 層只是更大型多語言系統中的一部分,相鄰的 TypeScript 頁面通常也值得參考。

最適合的情境

  • >混合了 Web 端點、工作排程與共用函式庫的 ASP.NET、worker-service 及內部平台儲存庫。
  • >維護成熟 .NET 系統資產的團隊,其中 LINQ、非同步流程與框架抽象層,掩蓋了真正的執行路徑。
  • >在讓代理人重寫商業邏輯之前,先測試它能否在分層的 .NET 程式碼中保持扎根於現實的團隊。

代理工作流程

  • >在編輯商業邏輯之前,先追蹤 controller、service 與 repository 的路徑。
  • >檢視某個 model、DTO 或共用工具,在整個儲存庫中於何處被實例化。
  • >在讓代理人重寫任何內容之前,先理解周邊的 LINQ 或非同步模式。

引擎細節

  • >`using` 前綴會在 import 時被正規化,而像 `?` 與 `[]` 這類可為 null 或陣列的後綴,則會從符號定義中被移除。
  • >實例化使用呼叫節點,並移除泛型括號,這有助於讓類似建構子的用法,在圖譜中保持可讀性。
  • >此設定會明確過濾大量的 BCL 與 LINQ 雜訊,讓儲存庫專屬的服務與模型更容易被凸顯出來。

實用的 MCP 進入點

  • find_symbol

    當你知道即將要動的 controller、服務、DTO 或共用型別名稱時使用。

  • dependency_search

    在編輯整個應用程式共用的核心服務或模型之前,使用傳入走訪。

  • get_task_context

    在分層的 .NET 程式碼庫中,很適合用於像『追蹤這個請求從 controller 到 repository 的流程』這類提示。