Получить доступные типы в CoreCLR

Это легко получить все доступные типы (например, для некоторого интерфейса) в старом .NET, но я не могу найти способ сделать это в новом CoreCLR.

Я хочу иметь функцию типа GetRepository, которая должна искать существующую реализацию IRepository и возвращать новый экземпляр этого типа. Реализация будет находиться в другом проекте.

Итак, в .NET я могу использовать что-то вроде этого:

AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())

Единственное решение, которое у меня есть для CoreCLR на данный момент:

public T GetRepository<T>()
{
  foreach (Type type in typeof(T).GetTypeInfo().Assembly.GetTypes())
    if (typeof(T).IsAssignableFrom(type) && type.GetTypeInfo().IsClass)
      return (T)Activator.CreateInstance(type);

  return default(T);
}

Но это работает, только если интерфейс и реализация находятся в одной сборке (и это не мой случай).

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос