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!