У вас нет T
в этом случае, потому что ConcreteWherever
не является универсальным типом.
Если вы хотите default(ConcreteWhatever)
, то это код, который вы должны написать.
Вы просто жалуетесь на код, автоматически сгенерированный Visual Studio? Если это так, то это разумная жалоба, но стоило бы быть прямо об этом ... (Обратите внимание, что вы не используете явную реализацию интерфейса здесь - в противном случае она будет объявлена как IWhatever<ConcreteWhatever>.Foo
. на самом деле также не имеет должной неявной реализации, иначе она должна быть публичной ...)
РЕДАКТИРОВАТЬ: Я только что сам попробовал то же самое, и увидел тот же результат, за исключением того, что метод обнародован. Похоже, что это просто ошибка Visual Studio - я предлагаю вам создать запрос Connect . Я подозреваю, что это относительно редкая ситуация - создание универсального интерфейса, который задает необязательный параметр, который использует значение по умолчанию для параметра типа в качестве значения ...