Использование шаблона начальной загрузки с ванильными веб-компонентами

Всякий раз, когда кто-то задает этот вопрос, я пытаюсь взять их пример и перевести его на что-то, используя более известные классы, которые явно незаконны (это то, что сделал Джон Скит в своем ответе ;

Давайте заменим 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)strings;
objects.Add(new Random());

foreach (string s in strings)
{
    Console.WriteLine("Length of string: {0}", s.Length);
}

Uh -ой. Внезапно мы перечислим List, и мы наталкиваемся на объект Random. Это нехорошо.

Надеюсь, это затруднит понимание проблемы.

0
задан L-Four 18 January 2019 в 11:42
поделиться