फ़्लैग एनम्स के लिए समर्थन जोड़ने के लिए निम्नलिखित के साथ @ नैरिक की विधि को बदलें।
public static string GetLocalizedDescription(this Enum @enum)
{
if (@enum == null)
return null;
StringBuilder sbRet = new StringBuilder();
string description = @enum.ToString();
var fields = description.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var field in fields)
{
FieldInfo fieldInfo = @enum.GetType().GetField(field);
DescriptionAttribute[] attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Any())
sbRet.AppendFormat("{0}, ", attributes[0].Description);
else
sbRet.AppendFormat("{0}, ", field);
}
if (sbRet.Length > 2)
sbRet.Remove(sbRet.Length - 2, 2);
return sbRet.ToString();
}
और विशेषता में NameResourceType बदल देते हैं:
public Type NameResourceType
{
get
{
return _resourceType;
}
set
{
_resourceType = value;
_nameProperty = _resourceType.GetProperty(base.Description, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
}
}
एक एनम एक गणक नहीं है, है ना? यह एक समेकित प्रकार है, लेकिन एक गणक कुछ अलग है जो मुझे विश्वास है ... – Svish
सी # 3.5 का उपयोग करके आप उस विधि को एक विस्तार विधि बना सकते हैं ताकि आप SomeEnum.Large.EnumDescription() का उपयोग कर सकें; –
किसी अन्य मुद्दे की खोज करते समय बस इस प्रश्न पर ठोकर खाई। मैं केवल याद दिलाता हूं कि प्रकार और सदस्य नामों का उपयोग करके आपके आवेदन को खराब करना मुश्किल हो जाता है (आपको प्रक्रिया से समझदार घोषणा को बाहर करना होगा)। –