Получить список классов, реализующих данный интерфейс - C#
Формулировка задачи:
Возможно ли получить список классов, реализующих определенный интерфейс? Или хотя бы унаследованных от данного класса? И каким образом это сделать?
Решение задачи: «Получить список классов, реализующих данный интерфейс»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { private static System.Diagnostics.Process gac; private static System.IO.StreamReader streamReader; private static System.Reflection.Assembly assembly; private static Type[] types; private static string nameInterface="System.Reflection.IReflect"; static void Main(string[] args) { gac = new System.Diagnostics.Process(); gac.StartInfo.FileName = @"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe"; gac.StartInfo.RedirectStandardOutput = true; gac.StartInfo.UseShellExecute = false; gac.StartInfo.Arguments = "/l"; gac.Start(); streamReader = gac.StandardOutput; while (!streamReader.EndOfStream) { assembly = GetNextAssembly(); if (assembly != null) { GetTypesOfAssembly(); foreach (Type type in types) { if (type != null) { foreach (Type inter in type.GetInterfaces()) { if (inter.FullName == nameInterface) { System.Console.Out.WriteLine(type.FullName); } } } } } } } static System.Reflection.Assembly GetNextAssembly() { System.Reflection.Assembly assembly; try { assembly = System.Reflection.Assembly.Load(streamReader.ReadLine()); } catch { assembly = null; } return assembly; } static void GetTypesOfAssembly() { try { types = assembly.GetTypes(); } catch (System.Reflection.ReflectionTypeLoadException refl) { types = refl.Types; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д