में जेनरिक एनम कास्ट इंट कास्ट Cast int to enum in C# के समान है लेकिन मेरा enum एक सामान्य प्रकार पैरामीटर है। सर्वोत्तम इसे संभालने का तरीका क्या है?सी #
उदाहरण:
private T ConvertEnum<T>(int i) where T : struct, IConvertible
{
return (T)i;
}
उत्पन्न संकलक त्रुटि Cannot convert type 'int' to 'T'
पूर्ण कोड, के रूप में इस प्रकार है जहां मूल्य पूर्णांक, या अशक्त समाहित कर सकता है।
private int? TryParseInt(string value)
{
var i = 0;
if (!int.TryParse(value, out i))
{
return null;
}
return i;
}
private T? TryParseEnum<T>(string value) where T : struct, IConvertible
{
var i = TryParseInt(value);
if (!i.HasValue)
{
return null;
}
return (T)i.Value;
}
http://stackoverflow.com/questions/2745320/enum-tryparse-with-flags-attribute - मदद कर सकता है ? – Sunny
http://stackoverflow.com/questions/1331739/enum-type-constraints-in-c-sharp पर अंतिम उत्तर, जो आप चाहते हैं उसके करीब है। हालांकि यह अभी भी चालाक नहीं है। मैं इसके लिए प्रतिबिंब का उपयोग करता हूं, आप कोड को बहुत मजबूत बना सकते हैं। संरचना मेरी राय में जेनेरिक के साथ गड़बड़ी करने के लिए काफी प्रतिकूल नहीं है। –
ऐसा कुछ जो बॉक्स नहीं करता है: [सी-तेज-गैर-मुक्केबाजी-रूपांतरण-जेनेरिक-एनम-टू-इंट] (http://stackoverflow.com/questions/1189144/c-sharp-non-boxing- रूपांतरण-का-जेनेरिक-एनम-टू-इंट) – nawfal