मैं कुछ डेटा रूपांतरण करने का प्रयास कर रहा हूं। दुर्भाग्य से, अधिकांश डेटा स्ट्रिंग्स में है, जहां यह इंट या डबल होना चाहिए, आदि ...
तो मुझे जो मिला है वह कुछ इस तरह है:
double? amount = Convert.ToDouble(strAmount);
इस दृष्टिकोण के साथ समस्या यह है कि strAmount खाली है, अगर यह खाली है तो मैं चाहता हूं कि यह शून्य हो, इसलिए जब मैं इसे डेटाबेस में जोड़ता हूं तो कॉलम शून्य हो जाएगा। इसलिए मैंने यह लिखना समाप्त कर दिया:
double? amount = null;
if(strAmount.Trim().Length>0)
{
amount = Convert.ToDouble(strAmount);
}
अब यह ठीक काम करता है, लेकिन अब मेरे पास एक के बजाय कोड की पांच लाइनें हैं। इससे चीजें पढ़ना थोड़ा मुश्किल हो जाता है, खासकर जब मेरे पास बड़ी मात्रा में कॉलम हैं।
मैंने सोचा था कि मैं स्ट्रिंग क्लास और जेनेरिक टाइप में पास होने के लिए एक एक्सटेंशन का उपयोग करूंगा, यह इसलिए है क्योंकि यह एक डबल या एक इंट या एक लंबा हो सकता है। इसलिए मैंने यह कोशिश की:
public static class GenericExtension
{
public static Nullable<T> ConvertToNullable<T>(this string s, T type) where T: struct
{
if (s.Trim().Length > 0)
{
return (Nullable<T>)s;
}
return null;
}
}
लेकिन मुझे त्रुटि मिलती है: टाइप 'स्ट्रिंग' को 'T' में नहीं बदल सकते?
क्या इसके चारों ओर एक रास्ता है? मैं जेनरिक का उपयोग करने के तरीके बनाने से बहुत परिचित नहीं हूं।