Ejemplo n.º 1
0
        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);
        }