Я пишу универсальные методы и не понимаю, почему следующий фрагмент кода выдает синтаксическую ошибку:
Код: Выделить всё
public abstract class Parent
{
public virtual T MyMethod() where T : Parent, new()
{
return this;
}
}
Этот метод ограничен возвратом типов, которые являются либо родительскими, либо типами, производными от родительского. Поскольку этот класс является абстрактным, возвращая this, метод, очевидно, вернет некоторый класс, наследуемый от Parent, однако появляется синтаксическое предупреждение: «Невозможно неявно преобразовать тип «Parent» в «T». '. Существует явное преобразование (вам не хватает приведения?)"
Может кто-нибудь объяснить, почему это так и как это можно исправить?
Подробнее здесь:
https://stackoverflow.com/questions/786 ... eturn-type