Убедитесь, что вы исключаете IManagerReport из списка типов, которые вы выбираете.
var types =AppDomain.CurrentDomain.GetAssemblies().ToList()
.SelectMany(s => s.GetTypes())
.Where(t => typeof(IManagerReport).IsAssignableFrom(t)
&& typeof(IManagerReport) != t
&& !t.IsInterface
&& !t.IsAbstract
&& !t.IsGenericTypeDefinition);
Проблема в том, что в ваших перечисляемых типах вы получаете не только производные типы IManagerReport, но и сам IManagerReport.Вы не можете создать экземпляр интерфейса, только класс.Используйте код, который я разместил, чтобы исключить большинство проблемных элементов, но я все равно добавил бы попытку / улов на Activator.CreateInstance.У вас могут быть производные типы, у которых нет открытого конструктора без параметров.Они также потерпят неудачу.
Завершение вызова в попытку / поймать и продолжить.Я бы сказал, что вы должны учитывать все возможности здесь, но их просто слишком много.Учет нескольких, а также учет возможности того, что создание просто не будет работать по другой причине.
try {
var temptype = Activator.CreateInstance(TheType) as IManagerReport;
} catch {
continue;
}