나는 이런 식으로하고 싶다 :
myYear = record.GetValueOrNull<int?>("myYear"),
널 입력 가능 유형을 일반 매개 변수로 확인하십시오.
GetValueOrNull
함수가 null을 반환 할 수 있기 때문에 첫 번째 시도는 다음과 같습니다.
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?'유형 제네릭 형식 또는 메서드에서 매개 변수 'T'로 사용하려면 참조 형식이어야합니다.
권리! Nullable<int>
입니다 struct
! 그래서 클래스 제약 조건을 제약 조건으로 변경하려고 시도했지만 struct
부작용으로 null
더 이상 반환 할 수 없습니다 .
public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
where T : struct
이제 과제 :
myYear = record.GetValueOrNull<int?>("myYear");
다음과 같은 오류가 발생합니다.
'int?'유형 일반 유형 또는 메소드에서 매개 변수 'T'로 사용하려면 널 입력 불가능 값 유형이어야합니다.
널 입력 가능 유형을 일반 매개 변수로 지정할 수 있습니까?
IDataRecord
에서 귀하의 서명 을DbDataRecord
..