[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;
        }

留言

這個網誌中的熱門文章

[Visual Studio]位於網際網路或是限制區域上 或是檔案上標有 web 字樣 所以無法處理該檔案。若希望處理這些檔案 請移除 web 字樣。

[IIS] IIS執行時,發生拒絕存取路徑 問題

[windows] xcopy 備份至 「網路磁碟機」