Skip to main content


DOTNET MEETUP JUNE 2025 @AGODA


สำหรับงานวันนี้จัดที่ Agoda@CTW โดยหัวข้อที่จดไว้มี 2 เรื่อง ดังนี้


From Tedious to Automated: Let AI Agents Clean Up Your .NET Code Reviews


Speaker Aram Pokmanee

- Why AI Automated Code Reviews


Speaker พบปัญหา Context Switching โดนขัดจังหวะไปทำอย่างอื่น เช่น Meeting หรือ Code Feature ไปทำอย่างอย่าง เช่น อยู่ Merge Request ที่ส่งไปมี Comment เด้งมา 30 อัน ซึ่งมันมีผลกับ Productivity เพราะ

  • Lost Focus - ประมาณ 20-45 นาทีหลุดไป ตอนกลับมาทำงานเติม ต้องมาจูนกันก่อน
  • Reduce Productivity
  • Exceeding Cognitive Capacity - พอสมองเราทำงานเยอะๆ มันส่งผลกับ Code เข้า เช่น Bug เพิ่มขึ้น หรือ เขียน Case ไม่ครบ


- AI in Coding


สำหรับอันนี้ยุคแรก 201x - 2020 จะเป็นการ suggest syntax ถัดมาหน่อยหลัง มีตัว Auto Complete หลังจาก ChatGPT เปิดตัวมา 2022 จะมีตัว GitHub Copilot

ช่วง 2023-2024 จะเป็นยุค IDE + AI อย่าง Cursor + Windsurf หรือแม่แต่ App อื่นๆอย่าง Figma มี AI จนมาถึงตอนนี้ยุค Agentic Coding

- Solution


จากเดิมที่เราต้องมา Manual จัดการ Comment ที่ละอัน เรายกให้ AI มันจัดการไป ตามรูปเลย

โดยมีวิธีการ 2 แบบ

📌 Old way เอา Code จาก Merge Request Copy Paste + Prompt ไปถาม AI ผ่าน Chat

📌 AI Agent IDE + MCP

ส่วนประกอบแต่ละอัน

  • AI IDE มีหลายตัวที่ลอง Claude Code / Cursor / VS Code + Copilot / Windsurf โดยแต่ละเข้ามีวิธีเชื่อม MCP Server ต่างกันไป
  • GitLab MCP Server เอามาจากอันนี้ github.com/zereight/gitlab-mcp
    - mcp เหมือน connector เชื่อม AI กับสิ่งที่เราสนใจ เคสนี้เชื่อม GitLab กับ IDE ที่มี LLM
    - mcp มันมีคนทำหลายค่าย ถ้าเป็น Official ปลอดภัยระดับนึง แต่ถ้าเป็น Open Source จะเข้าตำรา ใครเอาไปใช้ต้องรับผิดชอบด้วย เพราะ อาจจะเจอปัญหา Prompt Injection หรือ เอาข้อมูลส่วนตัวของเราไปด้วย ก่อนใช้ควรดูก่อนข้างในเขียนอะไร
  • GitLab API ถ้าใครสนใจอย่างเพิ่ม ผมมี Blog นะ ลองใช้ GitLab REST AP

จากนั้นเป็นการเล่าประสบการณ์แล้วว่าลองใช้เป็นยังไง แยกเป็น 2 กลุ่ม

Prompt: Please fixed this MR <LINK TO MERGE REQUEST>


  • Claude Code - command line ไว และ visualize ลำบาก
  • กลุ่ม IDE Cursor / VS Code + Copilot / Windsurf ใช้งานได้ Model หลากหลาย และ Visualize ได้ดี แต่ตอนใช้งานต้องเลือกส่วนราคา แต่ละตัวจะจ่ายกัน แบบเหมาๆ หรือ ได้ xxx request / เดือน ถ้าเกินจะเป็น pay as you go


นอกจากนี้ ถ้าเรามี Coding Style / Coding Standard ต้องสร้าง Context File บอก AI ให้มันเอาข้อมูลส่วนนี้ไปประกอบการ Review ด้วย github.com/colthreepv/llm-cont…


What's New in .NET 10 - Why .NET 10 is a game changer


Speaker Jose Barbosa

สำหรับ dotnet 10 ที่จะเปิดตัว Long Term Support (LTS) ในปลายเดือน NOV 25 นี้มีอะไรเด่นๆบ้าง


- runtime


📌 Array interface method devirtualization - เมื่อก่อนตอนเราเขียน foreach เวลา Loop จริงตัว JIT มันทำ Virtual Call แอบไปทำ for แบบเดิมอีกที มันต้องมีการ Check Bound ค่าขอบเสมอ ตอนนี้ตัว JIT ทำได้ในตัวแล้ว เลยเร็วขึ้น

static int Sum(int[] array){ int sum = 0; for (int i = 0; i < array.Length; i++) { sum += array[i]; } return sum;}
ก่อน net10 code แบบนี้จะ perf ดีสุด

static int Sum(int[] array){ int sum = 0; IEnumerable<int> temp = array; foreach (var num in temp) { sum += num; } return sum;}
ก่อน net10 code แบบนี้จะทำให้ Virtual Call แอบไปทำ for แบบ แต่ใน net10 ตัว JIT ลดขั้นตอน แล้วทำเหมือนกับ Code for ปกติได้แล้ว เลย Performace ดีขึ้น

📌 Stack Allocation of Arrays of Value Types

  • NET9 ตัว JIT สามารถจองพื้นที่ stack ลดการใช้ GC Pointer สำหรับสร้าง object ทำให้ทำงานได้เร็ว
  • NET10 เพิ่มความสามารถ stack allocation of small, fixed-size arrays of value types


- libraries


📌 .NET 10 libraries Enchangement มีหลายตัวตามรูปเลยทั้งในส่วน Certificate / Data / Compression / JSON เป็นต้น

- SDK


📌 Removal of unnescessary-framework provide package reference เอาข้อที่ไม่จำเป็นออก พบ Lib ลดลง Attack Surface ลดลงเพิ่ม Security และ Performance

📌 Pruning of Framework-Provided Package References ตัว nuget lib อันไหนไม่ได้ใช้งานจริง ตอน Run NuGet Audit มันจะเอาออกไปจาก Code Base เราเลย มันจะช่วยลดเวลา Build / Disk ที่ใข้ / เวลาในการดูแล เช่น ต้องมาไล่แก้ Security เป็นต้น

- ASP.NET Core


📌 OpenAPI3.1 Support
Key Changes:
- Nullable properties no longer use nullable: true. Instead, they now use a type keyword with an array that includes null.
- Removal of [code]OpenApiAny[/code], which is now replaced by [strong]JsonNode[/strong].
- Serving OpenAPI in YAML Format

📌 The [ProducesResponseType] attribute เพิ่ม description เอาไว้ใส่คำอธิบาย API ให้ชัดเจน
[HttpGet(Name = "GetWeatherForecast")][ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "Optional Field for add more detail for you api")]public IEnumerable<WeatherForecast> Get()

- Blazor


📌 QuickGrid RowClass Parameter
📌 Blazor Script Optimization - มองถูกมองเป็น embedded resources ใน ASP.NET มันเลยทำพวก Compression / Caching ได้ด้วย

- EF Core 10 (EF10)


📌 query translation Key Improvements

  • Translation support for DateOnly.ToDateTime(TimeOnly)
  • Optimized handling of consecutive LIMIT operations
  • Performance improvements for Count operations on ICollection<T>

📌 ExecuteUpdateAsync now supports regular lambda expressions

- C# 14


📌 New field Keyword

  • Before - code เยอะ


private string _msg;public string Message{ get => _msg; set => _msg = value ?? throw new ArgumentNullException(nameof(value));}

  • After


public string Message{ get; set => field = value ?? throw new ArgumentNullException(nameof(value));}
📌 Implicit Conversions for Span<T> and ReadOnlySpan<T>
📌 Unbound Generic Types in nameof

สำหรับเรื่อง dotnet10 ระหว่างเขียนไปเจอ blog ที่สรุปดีเลย ขอแปะไว้ด้วยครับ


นอกจากนี้คุณ Jose Barbosa นำเสนอ project MapCrud ช่วยการทำ API ง่ายครบทุก Verb ครับ + Doc (OpenAPI Format) แบบ FastAPI

Reference


#dotnet #ITSeminar2025