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 { // 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"), // new Tuple("定级员",@"C:\BwpB3Project\src\B3ButcherManageClient\WeighAndGrading\bin\Debug\WeighAndGrading"), // new Tuple("窒晕员",@"C:\BwpB3Project\src\B3ButcherManageClient\OrderConfirm\bin\Debug\OrderConfirm"), // new Tuple("掉猪处理员",@"C:\BwpB3Project\src\B3ButcherManageClient\DropPigReOrder\bin\Debug\DropPigReOrder"), // new Tuple("配货员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\Distribution\bin\Debug\Distribution") //}; static List> roleToAssemblies = new List>() { new Tuple("排宰员",@"ButcherOrder"), new Tuple("过磅员",@"ButcherWeight"), new Tuple("验质员",@"QualityAndOrder"), new Tuple("定级员",@"WeighAndGrading"), new Tuple("窒晕员",@"OrderConfirm"), new Tuple("掉猪处理员",@"DropPigReOrder"), }; 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; } } }