Код: Выделить всё
myYear = record.GetValueOrNull("myYear"),
Поскольку функция GetValueOrNull могла возвращать значение null, моя первая попытка была такой:
Код: Выделить всё
public static T GetValueOrNull(this DbDataRecord reader, string columnName)
where T : class
{
object columnValue = reader[columnName];
if (!(columnValue is DBNull))
{
return (T)columnValue;
}
return null;
}
Тип ' инт?' должен быть ссылочным типом, чтобы использовать его в качестве параметра «T» в универсальном типе или методе.
Верно! Nullable — это структура! Поэтому я попытался изменить ограничение класса на ограничение struct (и, как побочный эффект, больше не могу возвращать значение null):
Код: Выделить всё
public static T GetValueOrNull(this DbDataRecord reader, string columnName)
where T : struct
Код: Выделить всё
myYear = record.GetValueOrNull("myYear");
Тип 'int?' должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметра «T» в универсальном типе или методе.
Указывает вообще возможен тип, допускающий значение null, в качестве универсального параметра?
Подробнее здесь: https://stackoverflow.com/questions/209 ... r-possible
Мобильная версия