[C#]取得繼承介面的所有類別( get all the types that inherit from the given interface)
問題:
近來在思考是否能取得繼承介面的所有類別,以方便往後做自動註冊使用。
情境:
我有一個interface[ITestInterfaceService],與繼承[ITestInterfaceService]的兩個類別[A]與[B]如下圖,
問題是該如何取得繼承介面的所有類別,也就是類別A與B。
實作:
public static Type[] GetInheritedInterfaceTypes(Type interfaceType)
{
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => interfaceType.IsAssignableFrom(p) && !p.IsInterface).ToArray();
return types;
}
留言
張貼留言