using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Reflection; namespace ButcherFactory.BO.Utils { public static class FormUtil { public static Form CreateFrom() { #if DEBUG var dll = @"C:\BwpB3Project\src\ButcherFactorySolution\ButcherFactory.Form\bin\Debug\ButcherFactory.Form.dll"; #endif #if !DEBUG var dll = Path.Combine(Directory.GetCurrentDirectory(), "ButcherFactory.Form.dll"); #endif if (!File.Exists(dll)) throw new Exception("缺少必要的程序集文件 ButcherFactory.Form.dll"); var formType = typeof(IWithRoleForm); Form form = null; foreach (var type in Assembly.LoadFile(dll).GetTypes()) { if (formType.IsAssignableFrom(type)) { var instance = (IWithRoleForm)Activator.CreateInstance(type); foreach (var item in instance.RoleName) { if (AppContext.Worker.RoleList.Contains(item)) return instance.Generate(); } } } return form; } } public interface IWithRoleForm { List RoleName { get; } Form Generate(); } }