آموزش ساخت سرویس Enum در EF Core

تهران آی تی / برنامــه نویــسـی / آموزش ساخت سرویس Enum در EF Core

آموزش ساخت سرویس Enum در EF Core

در آموزش ساخت سرویس Enum در EF Core ابتدا برسی میکنیم Enum چیست. بعد به ویژگی ها و دلایل استفاده از Enum ها میپردازیم. و در آخر هم سرویسی برای دریافت مقادیر Enum همراه با Display Name آن ایجاد میکنیم. با آموزش ساخت سرویس Enum با ما همراه باشید.

Enum چیست ؟

Enum مخفف Enumeration است. و یک نوع داده‌ای خاص در زبان C# است. که برای تعریف مجموعه‌ای از مقادیر نام‌گذاری‌شده استفاده می‌شود. این مقادیر معمولاً مقادیر عدد صحیح هستند و به خوانایی کد و جلوگیری از استفاده از مقادیر عددی کمک می‌کنند.

Enum در C# یک نوع داده‌ای است. که برای گروه‌بندی چند مقدار ثابت و مرتبط با هم استفاده می‌شود. به جای اینکه از اعداد در برنامه استفاده کنیم، Enum کمک می‌کند تا نام‌های مشخص و قابل فهم برای این مقادیر داشته باشیم.

ویژگی‌های Enum

  • تعریف یک لیست از مقادیر ثابت و نام‌گذاری‌شده: استفاده از Enum باعث می‌شود که مقادیر خاصی را در کد نام‌گذاری کنیم و از مقداردهی مستقیم اعداد خودداری کنیم.
  • بهبود خوانایی کد: به جای استفاده از اعداد ثابت، می‌توان از مقادیر معنادار استفاده کرد.
  • افزایش امنیت کد: چون Enum یک نوع داده‌ای مشخص است، احتمال ارسال مقادیر اشتباه کاهش پیدا می‌کند.
  • پشتیبانی از مقداردهی اولیه: می‌توان مقادیر یک Enum را به‌صورت پیش‌فرض مقداردهی کرد یا مقدار پیش‌فرض را تغییر داد.
آموزش ساخت سرویس Enum در EF Core

آموزش ساخت سرویس Enum در EF Core

چرا از 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&lt;DisplayAttribute&gt;(): بررسی می‌کند که آیا فیلد Enum دارای ویژگی DisplayAttribute است یا خیر.

var attribute = field?.GetCustomAttribute<DisplayAttribute>();

اگر ویژگی DisplayAttribute وجود داشته باشد، مقدار Name آن را برمی‌گرداند. در غیر این صورت، نام Enum را برمی‌گرداند.

return attribute?.Name ?? value.ToString();

دانلود سرویس EnumService

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد