私はこのようなことをしたいです:
myYear = record.GetValueOrNull<int?>("myYear"),
ジェネリックパラメーターとしてnull許容型を確認します。
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'として使用するには、null不可の値型である必要があります
null許容型をジェネリックパラメーターとして指定することは可能ですか?
IDataRecord
はDbDataRecord
.. から署名を作成します