Tôi muốn làm một cái gì đó như thế này:
myYear = record.GetValueOrNull<int?>("myYear"),
Lưu ý loại nullable là tham số chung.
Vì GetValueOrNull
hàm có thể trả về null nên lần thử đầu tiên của tôi là:
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;
}
Nhưng lỗi tôi nhận được bây giờ là:
Loại 'int?' phải là loại tham chiếu để sử dụng nó làm tham số 'T' trong loại hoặc phương thức chung
Đúng! Nullable<int>
là một struct
! Vì vậy, tôi đã cố gắng thay đổi ràng buộc lớp thành một struct
ràng buộc (và vì tác dụng phụ không thể trả lại null
nữa):
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
Bây giờ nhiệm vụ:
myYear = record.GetValueOrNull<int?>("myYear");
Đưa ra lỗi sau:
Loại 'int?' phải là loại giá trị không thể rỗng để sử dụng nó làm tham số 'T' trong loại hoặc phương thức chung
Là chỉ định một loại nullable là một tham số chung có thể?
IDataRecord
từDbDataRecord
..