تبدیل رشته به enum در C#

mohsen2 هفته قبل
ارسال شده در
csharp

برای تبدیل یک رشته به enumeration می‌توانید از متد Enum.TryParse استفاده کنید که در نسخه‌های .NET 4.0 و بالاتر در دسترس است. این متد به شما این امکان را می‌دهد که بدون ایجاد اکسپشن، سعی کنید یک رشته را به مقدار enum مربوطه تبدیل کنید.

به‌عنوان مثال، کد زیر را در نظر بگیرید:

      StatusEnum myStatus;
Enum.TryParse("Active", out myStatus);
// یا با سینتکس C# 7
Enum.TryParse("Active", out StatusEnum myStatus);

    

در اینجا، اگر رشته "Active" با مقداری از نوع StatusEnum مطابقت داشته باشد، متغیر myStatus مقدار صحیح را خواهد گرفت.

اگر به یک متد ساده‌تر و یا با قابلیت کاربردی بیشتر نیاز دارید، می‌توانید یک متد کمکی برای تبدیل رشته به enum تعریف کنید. برای نمونه:

      public static T ParseEnum<T>(string value)
{
    return (T) Enum.Parse(typeof(T), value, true);
}

// استفاده از آن
StatusEnum myStatus = ParseEnum<StatusEnum>("Active");

    

اگر بخواهید کد خود را بیشتر ساده کنید، می‌توانید از extension method استفاده کنید:

      public static T ToEnum<T>(this string value)
{
    return (T) Enum.Parse(typeof(T), value, true);
}

// استفاده
StatusEnum myStatus = "Active".ToEnum<StatusEnum>();

    

برای حفاظت بیشتر، می‌توانید متدی تعریف کنید که اگر رشته ورودی نتواند به enum تبدیل شود، مقدار پیش‌فرضی را بازگرداند:

      public static T ToEnum<T>(this string value, T defaultValue) 
{
    if (string.IsNullOrEmpty(value))
    {
        return defaultValue;
    }

    T result;
    return Enum.TryParse(value, true, out result) ? result : defaultValue;
}

// استفاده
StatusEnum myStatus = "Active".ToEnum(StatusEnum.None);

    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!