using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; namespace AIStudio.Wpf.DiagramDesigner { /// /// /// public static class GlobalType { static GlobalType() { //string rootPath = System.AppDomain.CurrentDomain.BaseDirectory; //AllAssemblies = Directory.GetFiles(rootPath, "*.dll") // .Where(x => AssemblyPattern.Any(y => new FileInfo(x).Name.Contains(y))) // .Select(x => Assembly.LoadFrom(x)) // .Where(x => !x.IsDynamic) // .ToList(); //var refAssembyNames = Assembly.GetEntryAssembly().GetReferencedAssemblies(); //foreach (var asslembyNames in refAssembyNames) //{ // Assembly.Load(asslembyNames); //} AllAssemblies = AppDomain.CurrentDomain.GetReferanceAssemblies().Where(x => x.FullName.StartsWith("AIStudio")).ToList(); AllAssemblies.ForEach(aAssembly => { try { AllTypes.AddRange(aAssembly.GetTypes()); } catch { } }); } public static List GetReferanceAssemblies(this AppDomain domain) { var list = new List(); domain.GetAssemblies().ToList().ForEach(i => { GetReferanceAssemblies(i, list); }); return list; } static void GetReferanceAssemblies(Assembly assembly, List list) { assembly.GetReferencedAssemblies().ToList().ForEach(i => { var ass = Assembly.Load(i); if (!list.Contains(ass)) { list.Add(ass); GetReferanceAssemblies(ass, list); } }); } /// /// 解决方案程序集匹配名 /// public static readonly List AssemblyPattern = new List { "AIStudio" }; /// /// 解决方案所有程序集 /// public static readonly List AllAssemblies; /// /// 解决方案所有自定义类 /// public static readonly List AllTypes = new List(); } }