मैं कुछ इस तरह करना चाहता हूं:
myYear = record.GetValueOrNull<int?>("myYear"),
सामान्य पैरामीटर के रूप में अशक्त प्रकार पर ध्यान दें।
चूंकि GetValueOrNull
समारोह शून्य हो सकता है इसलिए मेरा पहला प्रयास यह था:
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
लेकिन अब मुझे जो त्रुटि मिल रही है, वह है:
प्रकार 'int?' सामान्य प्रकार या विधि में पैरामीटर 'टी' के रूप में इसका उपयोग करने के लिए एक संदर्भ प्रकार होना चाहिए
सही! Nullable<int>
एक है struct
! इसलिए मैंने कक्षा की बाधा को एक struct
बाधा में बदलने की कोशिश की (और एक साइड इफेक्ट के रूप में और null
अधिक वापस नहीं किया जा सकता है ):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
अब असाइनमेंट:
myYear = record.GetValueOrNull<int?>("myYear");
निम्नलिखित त्रुटि देता है:
प्रकार 'int?' सामान्य प्रकार या विधि में पैरामीटर 'टी' के रूप में इसका उपयोग करने के लिए एक गैर-अशक्त मूल्य प्रकार होना चाहिए
क्या एक अशक्त प्रकार को एक सामान्य पैरामीटर के रूप में निर्दिष्ट करना संभव है?
IDataRecord
सेDbDataRecord
..