Может ли кто-нибудь объяснить мне, почему этот код не работает? Как это связано с правилом LSP? Что означает инвариантность в этом контексте?
Пример взят из книги Adaptive code via C#:
class Program
{
static void Main(string[] args)
{
IDictionary<A, A> dict1 = new Dictionary<B,B>();
IDictionary<B,B> dict2 = new Dictionary<A, A>();
}
}
public class A { }
public class B: A { }
Сообщение об ошибке
Ошибка CS0266 Не удается неявно преобразовать тип System.Collections.Generic.Dictionary‹LSP.core.B, LSP.core.B› в System.Collections.Generic.IDictionary‹LSP.core.A, LSP.core.A› '. Существует явное преобразование (вы пропустили приведение?)
Ошибка CS0266 Не удается неявно преобразовать тип «System.Collections.Generic.Dictionary‹LSP.core.A, LSP.core.A›» в «System.Collections. Generic.IDictionary‹LSP.core.B, LSP.core.B›». Существует явное преобразование (вам не хватает приведения?)