using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace BO.Utils { public interface IAfterLogin { string RoleName { get; } Form Generate(); } public static class AfterLoginUtil { //#if debug static List> roleToAssemblies = new List>(){new Tuple("排宰员",@"C:\BwpB3Project\src\B3ButcherManageClient\ButcherOrder\bin\Debug\ButcherOrder"), new Tuple("过磅员",@"C:\BwpB3Project\src\B3ButcherManageClient\ButcherWeight\bin\Debug\ButcherWeight"), new Tuple("验质员",@"C:\BwpB3Project\src\B3ButcherManageClient\QualityAndOrder\bin\Debug\QualityAndOrder")}; //#endif //#if !debug // static List> roleToAssemblies = new List>(){new Tuple("排宰员",@"ButcherOrder"), //new Tuple("过磅员",@"ButcherWeight"), // new Tuple("验质员",@"QualityAndOrder")}; //#endif public static Form CreateForm(string role) { var first = roleToAssemblies.FirstOrDefault(x => x.Item1 == role); if (first == null) throw new Exception("未注册的角色"); //#if debug var filePath = string.Format("{0}.dll", first.Item2); //#endif //#if !debug //var filePath = Path.Combine(Application.StartupPath, string.Format("{0}.dll", first.Item2)); //#endif if (!File.Exists(filePath)) throw new Exception("相关模块不存在"); var formType = typeof(IAfterLogin); foreach (var type in Assembly.LoadFile(filePath).GetTypes()) { if (formType.IsAssignableFrom(type)) { var instance = (IAfterLogin)Activator.CreateInstance(type); if (role == instance.RoleName) return instance.Generate(); } } return null; } } }