Obter tipos disponíveis no CoreCLR

É fácil obter todos os tipos disponíveis (por exemplo, para algumas interfaces) no .NET antigo, mas não consigo encontrar a maneira de fazer isso no novo CoreCLR.

O que eu quero fazer é ter uma função como GetRepository, que deve procurar a implementação existente do IRepository e retornar uma nova instância desse tipo. A implementação estará localizada no projeto diferente.

Então, no .NET eu posso usar algo assim:

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

A única solução que tenho para o CoreCLR no momento é:

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);
}

Mas funciona apenas se a interface e a implementação estiverem localizadas no mesmo assembly (e este não é o meu caso).

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion