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"), 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\TrunksIousOutInStore\bin\Debug\TrunksIousOutInStore"), new Tuple("掉猪处理员",@"C:\BwpB3Project\src\B3ButcherManageClient\DropPigReOrder\bin\Debug\DropPigReOrder"), new Tuple("配货员",@"C:\BwpB3Project\src\B3ButcherManageClient\Distribution\bin\Debug\Distribution"), new Tuple("分割称重",@"C:\BwpB3Project\src\B3ButcherManageClient\SegmentationWeight\bin\Debug\SegmentationWeight"), new Tuple("分割入库",@"C:\BwpB3Project\src\B3ButcherManageClient\SegmentationInStore\bin\Debug\SegmentationInStore"), new Tuple("定级校验",@"C:\BwpB3Project\src\B3ButcherManageClient\WeighAndGrading\bin\Debug\WeighAndGrading"), new Tuple("领料退料",@"C:\BwpB3Project\src\B3ButcherManageClient\MaterialRequisition\bin\Debug\MaterialRequisition"), }; //luanhui 公司电脑 //static List> roleToAssemblies = new List>(){ // new Tuple("排宰员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\ButcherOrder\bin\Debug\ButcherOrder"), // new Tuple("过磅员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\ButcherWeight\bin\Debug\ButcherWeight"), // new Tuple("验质员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\QualityAndOrder\bin\Debug\QualityAndOrder"), // new Tuple("定级员",@"C:\BwpB3Project\src\B3ButcherManageClient\WeighAndGrading\bin\Debug\WeighAndGrading"), // new Tuple("窒晕员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\OrderConfirm\bin\Debug\OrderConfirm"), // new Tuple("白条入库",@"D:\BWP\BWPB3\src\B3ButcherManageClient\TrunksIousOutInStore\bin\Debug\TrunksIousOutInStore"), // new Tuple("掉猪处理员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\DropPigReOrder\bin\Debug\DropPigReOrder"), // new Tuple("配货员",@"D:\BWP\BWPB3\src\B3ButcherManageClient\Distribution\bin\Debug\Distribution"), // new Tuple("分割称重",@"D:\BWP\BWPB3\src\B3ButcherManageClient\SegmentationWeight\bin\Debug\SegmentationWeight"), // new Tuple("分割入库",@"D:\BWP\BWPB3\src\B3ButcherManageClient\SegmentationInStore\bin\Debug\SegmentationInStore"), // new Tuple("定级校验",@"D:\BWP\BWPB3\src\B3ButcherManageClient\WeighAndGrading\bin\Debug\WeighAndGrading"), //}; #else static List> roleToAssemblies = new List>() { new Tuple("排宰员",@"ButcherOrder"), new Tuple("过磅员",@"ButcherWeight"), new Tuple("验质员",@"QualityAndOrder"), new Tuple("定级员",@"WeighAndGrading"), new Tuple("窒晕员",@"OrderConfirm"), new Tuple("掉猪处理员",@"DropPigReOrder"), new Tuple("分割称重",@"SegmentationWeight"), new Tuple("分割入库",@"SegmentationInStore"), new Tuple("定级校验",@"WeighAndGrading"), new Tuple("白条入库",@"TrunksIousOutInStore"), new Tuple("领料退料",@"MaterialRequisition"), }; #endif public static Form CreateForm(string role) { var first = roleToAssemblies.FirstOrDefault(x => x.Item1 == role); if (first == null) throw new Exception("未注册的角色:"+role); #if DEBUG var filePath = string.Format("{0}.dll", first.Item2); #else 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; } } }