تاریخچه و سیر تکاملی Implicit Usings تا داتنت 11
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۳/۲۳ ۰۹:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
System.Net.Http.Json به پروژههای کنسول، عملاً یکی از پرکاربردترین کتابخانههای مدرن را بدون نیاز به نوشتن کد اضافه در دسترس همهجا قرار میدهد و یکپارچگی خوبی با ASP.NET Core ایجاد میکند. پتانسیل قابلیت Implicit Usings (فضاهای نام ضمنی) اولین بار در داتنت 6 معرفی شد تا از شلوغی ساختار فایلها (Boilerplate code) کم کند. در ادامه، تاریخچه و روند تکامل این قابلیت را از ابتدا تا داتنت 11 مرور میکنیم:Global Usings را به سیشارپ اضافه کرد. بر پایه این ویژگی، قابلیت Implicit Usings در فایل پروژه (.csproj) معرفی شد. اگر این قابلیت فعال باشد، کامپایلر به طور خودکار بر اساس نوع SDK پروژه، مجموعهای از فضاهای نام استاندارد را به صورت global using اعمال میکند.SystemSystem.Collections.GenericSystem.IOSystem.LinqSystem.Net.HttpSystem.ThreadingSystem.Threading.Tasks💡 نکته: برای پروژههای وب (Microsoft.NET.Sdk.Web) یا دسکتاپ (WPF/WinForms)، فضاهای نام اختصاصیِ مربوط به خودشان (مثلMicrosoft.AspNetCore.BuilderیاSystem.Windows) نیز به این لیست اضافه میشد.
System.Net.Http.Json به لیست بستههای ضمنی پروژههایی که از Microsoft.NET.Sdk استفاده میکنند اضافه شد.GetFromJsonAsync یا PostAsJsonAsync روی کلاس HttpClient بدون نیاز به هیچ using اضافی در دسترس هستند.| فضای نام (Namespace) | داتنت 6 تا 9 | داتنت 11 | کاربرد اصلی |
System | ✅ | ✅ | انواع پایهای داده، ساختارهای اصلی |
System.Collections.Generic | ✅ | ✅ | کار با لیستها و دیکشنریها |
System.IO | ✅ | ✅ | خواندن و نوشتن فایلها و استریمها |
System.Linq | ✅ | ✅ | کوئریها و پردازش مجموعهها |
System.Net.Http | ✅ | ✅ | ایجاد درخواستهای شبکه با HttpClient |
System.Threading.Tasks | ✅ | ✅ | برنامهنویسی آسنکرون (async/await) |
System.Net.Http.Json | ❌ | ✅ (جدید) | سریالایز و دیسریالایز خودکار JSON در بستر HTTP |
.csproj آن را حذف (Disable/Remove) کنید:<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net11.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Using Remove="System.Net.Http.Json" />
</ItemGroup>
</Project>Implicit Usings نشان میدهد که داتنت به سمت سادهسازی کدنویسی و کاهش تشریفات (Ceremony) حرکت میکند تا برنامهنویسان بتوانند درست مثل زبانهای مدرن دیگر (مانند پایتون یا تایپاسکریپت)، سریعتر هسته اصلی منطق برنامه خود را بنویسند.