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
__________