Вместо этого:
IReadOnlyDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, ConcurrentBag<MyType>>();
Вам необходимо сделать следующее:
ConcurrentDictionary<string, IReadOnlyCollection<MyType>> results = new ConcurrentDictionary<string, IReadOnlyCollection<MyType>>();
или
ConcurrentDictionary<string, ConcurrentBag<Point>> results = new ConcurrentDictionary<string, ConcurrentBag<Point>>();
Это называется ограничением ковариации.Вот более подробно об этом: в основном, если у вас есть контейнер parent, вы можете поместить в него любой производный класс.Но если у вас есть контейнер для ребенка, то вы не можете поместить в него родительский контейнер.
В Водопаде вода падает сверху вниз.
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/dd799517(v=vs.100)