Метод расширения с проверкой нуля

Итак, я выполняю много работы с базой данных в приложении - и есть несколько возможных возвращаемых значений моей системы кэширования . Он может возвращать null, он может возвращать значение по умолчанию (тип) или он может возвращать недопустимый объект (недопустимый объект, я имею в виду объект с неправильными свойствами / значениями). Я хочу создать метод расширения, чтобы выполнять все эти проверки за меня, например:

    public static bool Valid<T> (this T obj) where T: class
    {
        if (obj == null) 
            return false;
        else if (obj == default(T))
            return false;
        //Other class checks here
        else 
            return true;
    }

Проблема в том, что мой компилятор сообщает мне, что if (obj == default (T)) всегда будет ложный.

Почему?

8
задан Peter Mortensen 15 February 2012 в 00:49
поделиться