Получить доступные типы в 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);
}
Но это работает, только если интерфейс и реализация находятся в одной сборке (и это не мой случай).
Спасибо!