.NET কোর এবং .NET> 4 এ জেনেরিক পার্স পদ্ধতি রয়েছে :
Enum.TryParse("Active", out StatusEnum myStatus);
এটিতে সি # 7 এর নতুন ইনলাইন out
ভেরিয়েবলগুলিও অন্তর্ভুক্ত রয়েছে , সুতরাং এটি চেষ্টা-বিশ্লেষণ করে, সুস্পষ্ট এনাম টাইপের রূপান্তর করে এবং আরম্ভ হয় + myStatus
ভেরিয়েবলকে জনপ্রিয় করে তোলে।
আপনার যদি সি # 7 এ এবং সর্বশেষতম .NET এ অ্যাক্সেস থাকে তবে এটি সেরা উপায়।
আসল উত্তর
নেট মধ্যে এটি বরং কুরুচিপূর্ণ (4 বা ততোধিক অবধি):
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
আমি এর সাথে এটিকে আরও সহজ করে তুলছি:
public static T ParseEnum<T>(string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
তারপরে আমি এটি করতে পারি:
StatusEnum MyStatus = EnumUtil.ParseEnum<StatusEnum>("Active");
মন্তব্যে প্রস্তাবিত একটি বিকল্প হ'ল একটি এক্সটেনশন যুক্ত করা, যা যথেষ্ট সহজ:
public static T ToEnum<T>(this string value)
{
return (T) Enum.Parse(typeof(T), value, true);
}
StatusEnum MyStatus = "Active".ToEnum<StatusEnum>();
অবশেষে, আপনি স্ট্রিংটিকে বিশ্লেষণ করতে না পারলে ডিফল্ট এনাম ব্যবহার করতে চাইতে পারেন:
public static T ToEnum<T>(this string value, T defaultValue)
{
if (string.IsNullOrEmpty(value))
{
return defaultValue;
}
T result;
return Enum.TryParse<T>(value, true, out result) ? result : defaultValue;
}
যা এই কল করে:
StatusEnum MyStatus = "Active".ToEnum(StatusEnum.None);
যাইহোক, আমি সতর্কতা অবলম্বন করব যে string
এটির মতো কোনও এক্সটেনশন পদ্ধতি যুক্ত করা (নেমস্পেস নিয়ন্ত্রণ ছাড়াই) এটি string
এনাম রাখে বা না রাখে তা সমস্ত ক্ষেত্রে প্রদর্শিত হবে (সুতরাং 1234.ToString().ToEnum(StatusEnum.None)
এটি বৈধ তবে অযৌক্তিক হবে)। মাইক্রোসফ্টের মূল ক্লাসগুলি অতিরিক্ত পদ্ধতির সাথে ঝাঁকুনি দেওয়া এড়ানো ভাল often তবে কেবলমাত্র আপনার নির্দিষ্ট বিকাশকারী দলের those এক্সটেনশনগুলি কী করে সে সম্পর্কে খুব ভাল ধারণা না থাকলে কেবলমাত্র খুব নির্দিষ্ট প্রসঙ্গে প্রযোজ্য।