Всякий раз, когда кто-то задает этот вопрос, я пытаюсь взять их пример и перевести его на что-то, используя более известные классы, которые явно незаконны (это то, что сделал Джон Скит в своем ответе ;
Давайте заменим MyEntityRepository
на MyStringList
, например:
class MyStringList : List { }
Теперь вам кажется, что вы хотите MyEntityRepository
, который должен быть применим к RepositoryBase
, причем рассуждение состоит в том, что это должно быть возможным, поскольку MyEntity
происходит от EntityBase
.
Но string
происходит от object
, не Это? Таким образом, по этой логике мы должны были бы сделать MyStringList
для List
.
Посмотрим, что произойдет, если мы допустим это ...
var strings = new MyStringList();
strings.Add("Hello");
strings.Add("Goodbye");
var objects = (List
Uh -ой. Внезапно мы перечислим List
, и мы наталкиваемся на объект Random
. Это нехорошо.
Надеюсь, это затруднит понимание проблемы.