Специализация T GetFieldValue<T>(int ordinal)
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 30.06.21 14:37
Оценка:
В .NET появилась пара типов DateOnly, TimeOnly, которые напрямую в DbDateReader не поддерживаются.

В том смысле, что в DbDateReader нет таких методов GetDateOnly, GetTimeOnly.

Но их можно поддерживать через виртуальный метод T GetFieldValue<T>(int ordinal).

В свете этой темы возник вопрос — как бы замутить такие специализации этого GetFieldValue<T>:

public override DateOnly GetFieldValue<DateOnly>(int ordinal)
{
 //....
}

public override TimeOnly GetFieldValue<TimeOnly>(int ordinal)
{
 //....
}




---
Я тут посмотрел, как такие вещи мутят другие

  Мутят они через if-ы
        public virtual T? GetFieldValue<T>(int ordinal)
        {
            if (IsDBNull(ordinal)
                && typeof(T).IsNullable())
            {
                return GetNull<T>(ordinal);
            }


            var type = typeof(T).UnwrapNullableType().UnwrapEnumType();
            if (type == typeof(bool))
            {
                return (T)(object)GetBoolean(ordinal);
            }

            //....

---
Можно как-то извернуться и таки сделать желаемую специализацию?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.