TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2197 2.49K
امکانات جدید NET 8. برای Attribute ها

1️⃣ RequiredAttribute.DisallowAllDefaultValues[]

- اتربیوت Required می‌تواند برای ممنوع کردن مقادیر پیش‌فرض با مشخص کردن RequiredAttribute.DisallowAllDefaultValues پیکربندی شود.

- این موضوع شما را مجبور می‌کند تا هر نوعی که اتربیوت Required دارد، با یک مقدار غیرپیش‌فرض مقداردهی اولیه شود.

2️⃣ RangeAttribute محدوده‌های انحصاری

- اتربیوت Range اکنون از محدوده‌های انحصاری با مشخص کردن RangeAttribute(low, high, true) پشتیبانی می‌کند.

- پارامتر سوم مشخص می‌کند که آیا محدوده‌ها شامل (false) هستند یا انحصاری (true).

برای درک بهتر مثال زیر را در نظر بگیرید:
[Range(1d, 3d, MinimumIsExclusive = true, MaximumIsExclusive = true)]
public double Sample { get; set; }

مثال بالا را با یادآوری یک مساله ریاضی توضیح می‌دهم. در ریاضیات فرق بین دو عبارت زیر چیست؟
[1,3]
(1,3)

عبارت اول دقیقا شامل ۱ و ۳ هم می‌شود ولی عبارت دوم به اینصورت نیست.
حالا اگر این دو مقدار MinimumIsExclusive و MaximumIsExclusive را false دهیم یعنی عبارت اولی را می‌خوایم اعمال کنیم [1,3] ولی اگر true مقدار دهی کنیم یعنی عبارت دومی مدنظر ماست (1,3)
یعنی اگه این دو را true دهید و هنگام استفاده از Sample مقدار ۱ یا ۳ را بدهید این اتربیوت اجازه این کار رو به شما نمی‌دهد.

3️⃣ LengthAttribute

- اتربیوت Length از قبل می‌توانست برای مشخص کردن طول دقیق مورد نیاز برای رشته‌ها استفاده شود. در این آپدیت می‌تواند برای مشخص کردن تعداد اعضای آرایه نیز استفاده شود.
[Length(10, 20)]
public ICollection<int> Values { get; set; }

این آرایه باید حداقل ۱۰ و حداکثر ۲۰ عضو داشته باشد.

4️⃣ AllowedValuesAttribute و DeniedValuesAttribute

-اتربیوت AllowedValuesAttribute مجموعه‌ای از مقادیر مجاز برای یک پارامتر را مشخص می‌کند.

-اتربیوت DeniedValuesAttribute مقادیری را که مجاز نیستند مشخص می‌کند.

- این موارد کنترل بیشتری نسبت به RangeAttribute برای مقادیر مجاز فراهم می‌کنند.

[AllowedValues("chocolate", "vanilla", "strawberry")]
public string IceCreamFlavor { get; set; }

[DeniedValues("beetroot", "eggplant", "rutabaga")]
public string CakeFlavor { get; set; }

آرایه اولی صرفا مجاز به داشتن مقادیر "chocolate", "vanilla", "strawberry" است و آرایه دوم نباید مقادیر "beetroot", "eggplant", "rutabagaرا داشته باشد.


5️⃣ System.Reflection Enhancements

به روز رسانی APIهای Reflection برای درک اتربیوت‌های جدیدی که در بالا مطرح شد.

🔗 نسخه کامل این مقاله را ‌می‌توانید در اینجا مطالعه کنید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#حامد_حاجیلو (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

__________
ByteHide Blog .NET 8 Preview 2 Unveiled: 5 New Features You Need to Know Get ready to explore the latest features in .NET 8 Preview 2 and how they will change the way you program. Discover them now.
  • 👍 21
  • ❤ 1
  • 🔥 1
  • 👏 1
More from @softwarephilosophy
  1. Oct 5, 2026"I'd love an AI assistant for my listings, but I don't have a developer" is something we h…
  2. Oct 5, 2026امروز تو این ورکشاپ قراره یه ایجنت هوش‌مصنوعی رو از صفر تا صد با هم درست کنیم. بدون یک خط…
  3. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  4. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  5. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  6. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →