
آموزش ساخت سرویس Enum در EF Core
در آموزش ساخت سرویس Enum در EF Core ابتدا برسی میکنیم Enum چیست. بعد به ویژگی ها و دلایل استفاده از Enum ها میپردازیم. و در آخر هم سرویسی برای دریافت مقادیر Enum همراه با Display Name آن ایجاد میکنیم. با آموزش ساخت سرویس Enum با ما همراه باشید.
Enum چیست ؟
Enum مخفف Enumeration است. و یک نوع دادهای خاص در زبان C# است. که برای تعریف مجموعهای از مقادیر نامگذاریشده استفاده میشود. این مقادیر معمولاً مقادیر عدد صحیح هستند و به خوانایی کد و جلوگیری از استفاده از مقادیر عددی کمک میکنند.
Enum در C# یک نوع دادهای است. که برای گروهبندی چند مقدار ثابت و مرتبط با هم استفاده میشود. به جای اینکه از اعداد در برنامه استفاده کنیم، Enum کمک میکند تا نامهای مشخص و قابل فهم برای این مقادیر داشته باشیم.
ویژگیهای Enum
- تعریف یک لیست از مقادیر ثابت و نامگذاریشده: استفاده از Enum باعث میشود که مقادیر خاصی را در کد نامگذاری کنیم و از مقداردهی مستقیم اعداد خودداری کنیم.
- بهبود خوانایی کد: به جای استفاده از اعداد ثابت، میتوان از مقادیر معنادار استفاده کرد.
- افزایش امنیت کد: چون Enum یک نوع دادهای مشخص است، احتمال ارسال مقادیر اشتباه کاهش پیدا میکند.
- پشتیبانی از مقداردهی اولیه: میتوان مقادیر یک Enum را بهصورت پیشفرض مقداردهی کرد یا مقدار پیشفرض را تغییر داد.
چرا از Enum استفاده میکنیم؟
- کد خواناتر میشود.
- خطاهای ناشی از مقداردهی اشتباه کاهش مییابند.
- تغییرات در آینده راحتتر انجام میشود.
- Enum جایگزینی برای اعداد نامفهوم است که معنی و نظم بیشتری به کد شما میدهد.
ایجاد یک Enum در ASP.NET Core
برای مثال، یک Enum برای وضعیت سفارش در یک سیستم فروشگاهی را ایجاد میکنیم:
public enum OrderStatus
{
Pending = 1, // سفارش در انتظار پردازش
Processing = 2, // سفارش در حال پردازش
Shipped = 3, // سفارش ارسال شده است
Delivered = 4, // سفارش تحویل داده شده است
Canceled = 5 // سفارش لغو شده است
}ساخت سرویس قدرتمند EnumService در ASP.NET Core 9
در توسعه اپلیکیشنهای تحت وب با استفاده از ASP.NET Core، مدیریت بهینه و ساده دادهها اهمیت بسیار بالایی دارد. یکی از نیازهای متداول در پروژهها، تبدیل مقادیر Enum به لیستی است که بتوان به سادگی از آن در رابط کاربری استفاده کرد. سرویس EnumService دقیقاً برای این نیاز طراحی شده است.
ساخت IEnumService
ابتدا یک Interface برای سرویس تعریف شده است تا امکان پیادهسازیهای مختلف و رعایت اصول Dependency Injection فراهم شود. در این اینترفیس، متدی تعریف شده که یک Enum جنریک را دریافت کرده و لیستی از SelectListItem تولید میکند.
public interface IEnumService
{
public IEnumerable<SelectListItem> GetEnumList<TEnum>() where TEnum : Enum;
}پیادهسازی سرویس EnumService
این کلاس، اینترفیس IEnumService را پیادهسازی کرده و متدی برای استخراج مقادیر Enum و تبدیل آنها به لیستی از SelectListItem ارائه میدهد.
public class EnumService : IEnumService
{
public IEnumerable<SelectListItem> GetEnumList<TEnum>() where TEnum : Enum
{
return Enum.GetValues(typeof(TEnum))
.Cast<TEnum>()
.Select(e => new SelectListItem
{
Value = ((int)(object)e).ToString(),
Text = GetEnumDisplayName(e)
});
}
private static string GetEnumDisplayName(Enum value)
{
var field = value.GetType().GetField(value.ToString());
var attribute = field?.GetCustomAttribute<DisplayAttribute>();
return attribute?.Name ?? value.ToString();
}
}بررسی عملکرد کدهای سرویس Enum
کد زیر تمام مقادیر موجود در Enum مشخصشده را استخراج میکند.
Enum.GetValues(typeof(TEnum))در زبان برنامهنویسی #C، عمل Cast کردن به معنای تبدیل یک نوع داده به نوع دیگری است. مثلاً وقتی شما از Enum.GetValues استفاده میکنید، خروجی آن به صورت یک آرایهای از نوع کلی object است. در این حالت، برای اینکه بتوانید از مقادیر بهصورت نوع مشخص شده (TEnum) استفاده کنید، باید عمل Cast را انجام دهید. متد GetValues یک آرایه از object برمیگرداند، بنابراین باید این مقادیر را به نوع اصلی TEnum تبدیل کنیم.
Cast<TEnum>()مقدارهای Enum را به SelectListItem تبدیل میکند.
.Select(e => new SelectListItemابتدا e را به object تبدیل میکنیم. سپس آن را به int تبدیل میکنیم. .ToString(): مقدار را به رشته تبدیل میکند زیرا Value در SelectListItem باید از نوع string باشد.
Value = ((int)(object)e).ToString(),مقدار Text در SelectListItem را برابر نام نمایشی مقدار Enum تنظیم میکند. GetEnumDisplayName(e): این متد بررسی میکند که آیا مقدار Enum دارای ویژگی [Display(Name = “…”)] است یا خیر.
Text = GetEnumDisplayName(e)این متد مقدار Enum را دریافت کرده و نام نمایشی آن را استخراج میکند.
private static string GetEnumDisplayName(Enum value)مقدار value.GetType(): نوع Enum را دریافت میکند. GetField(value.ToString()): مقدار Enum را به string تبدیل کرده و فیلد مربوط به آن را دریافت میکند.
var field = value.GetType().GetField(value.ToString());مقدار GetCustomAttribute<DisplayAttribute>(): بررسی میکند که آیا فیلد Enum دارای ویژگی DisplayAttribute است یا خیر.
var attribute = field?.GetCustomAttribute<DisplayAttribute>();اگر ویژگی DisplayAttribute وجود داشته باشد، مقدار Name آن را برمیگرداند. در غیر این صورت، نام Enum را برمیگرداند.
return attribute?.Name ?? value.ToString();دانلود سرویس EnumService
خرید از تهران آی تی به صورت آنلاین میباشد و لینک دانلود به صورت خودکار برای شما ایمیل میشود. همه گزینهها همان فایل کامل را به شما میدهند. تفاوت فقط در نحوه جبران هزینه است؛ انتخاب با وجدان شماست. چنانچه نیاز به هرگونه سوال و یا کمک در خرید آنلاین داشتید با شماره 09121486770 تماس بگیرید. شماره کارت ما 6362141104352035 به نام محمدرضا احدیان میباشد.
































مثل همیشه عالی ،واقعا خسته نباشید
ممتون از شما دوست گرامی ❤️❤️❤️