Verfügbare Typen in CoreCLR erhalten
Dies ist einfach, alle verfügbaren Typen (z. B. für einige Schnittstellen) in der alten .NET-Version abzurufen, aber in der neuen CoreCLR kann ich nicht feststellen, wie das geht.
Ich möchte eine Funktion wie GetRepository haben, die nach der vorhandenen Implementierung von IRepository suchen und eine neue Instanz dieses Typs zurückgeben soll. Die Implementierung erfolgt in einem anderen Projekt.
Also, in .NET kann ich so etwas verwenden:
AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
Die einzige Lösung, die ich derzeit für CoreCLR habe, ist:
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);
}
Aber es funktioniert nur, wenn sich die Schnittstelle und die Implementierung in derselben Assembly befinden (und das ist nicht mein Fall).
Vielen Dank