Вы столкнулись с очень популярной проблемой общего ко / противо-дисперсии. Вы в основном пытаетесь разыграть Dictionary<int, ScheduleArea>
до Dictionary<int, IArea<Schedule>>
. Дженерики в .NET не могут быть назначены таким образом
Однако, вы могли бы привести его к IDictionary<int, ScheduleArea>
или ICollection<KeyValuePair<int, ScheduleArea>>
. Чтобы получить ICollection<KeyValuePair<int, IArea<Schedule>>
, вам нужно либо изменить тип переменной subArea
, либо создать новый словарь:
Dictionary<int, IArea<Schedule>> dict = new Dictionary<int, IArea<Schedule>>(subArea.Count);
foreach (KeyValuePair<int, ScheduleArea> kvp in subArea)
{
dict.Add(kvp.Key, kvp.Value);
}
return dict;
Кроме того, Dictionary
не наследуется от Collection
- вам нужно использовать ICollection
вместо