मैं नीचे दिए गए कोड है और मैं एक प्रकार है जो भी स्ट्रिंग से निर्दिष्ट किया जाता है के लिए एक स्ट्रिंग बदलने की आवश्यकता होगी:एक Nullable प्रकार कौन सा क्रम में निर्धारित किया जाता है एक स्ट्रिंग में कनवर्ट करने के लिए कैसे?
Invalid cast from 'System.String' to 'System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
कैसे होगा कि:
Type t = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
object d = Convert.ChangeType("2012-02-23 10:00:00", t);
मैं नीचे त्रुटि संदेश मिलता है अच्छी तरह से संभव हो?
मैं जानता हूँ कि एक बदसूरत तरीका है कि प्रकार नल है की जाँच करने के लिए उपयोग करता है, तो हो सकता है:
Type possiblyNullableType = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
var underlyingType = Nullable.GetUnderlyingType(possiblyNullableType);
Object result;
// if it's null, it means it wasn't nullable
if (underlyingType != null)
{
result = Convert.ChangeType("2012-02-23 10:00:00", underlyingType);
}
कोई बेहतर तरीका होगा?
धन्यवाद,
आपको t.IsGenericType की जांच करने की आवश्यकता क्यों होगी? t.GetGenericTypeDefinition() == टाइपऑफ (Nullable <>) भाग उसको कवर करेगा; है ना? –
@William 'GetGenericTypeDefinition()' एक अपवाद फेंकता है तो प्रकार साधारण नहीं है। – hvd