Просто сделайте это универсальным методом:
public static object GetVerifiedValue<T>(this Nullable<T> obj)
where T : struct
{
return obj.HasValue ? obj.Value : DBNull.Value;
}
Код вызова может использовать вывод типа при вызове:
int? x = 10;
object o = x.GetVerifiedValue();
РЕДАКТИРОВАТЬ: Другой вариант - использовать поведение бокса обнуляемых типов:
public static object GetVerifiedValue(object obj)
{
return obj ?? DBNull.Value;
}
Конечно, это не подтверждает, что вы пытаетесь передать выражение типа значения, допускающего обнуляемость ...