[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; }
留言
張貼留言