public static IEnumerable <ICliPlugin> FindAll(string subDir) { string dir = AppTools.GetAppWorkDirectory(subDir); List <ICliPlugin> result = new List <ICliPlugin>(); if (Directory.Exists(dir)) { var assemblies = Directory.GetFiles(dir, "*.dll"); foreach (var path in assemblies) { Assembly assm = Assembly.LoadFrom(path); Type baseType = typeof(ICliPlugin); var typelist = assm.GetExportedTypes().Where(t => baseType.IsAssignableFrom(t)).ToList(); foreach (Type tp in typelist) { result.Add(Activator.CreateInstance(tp) as ICliPlugin); } } } return(result); }