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:\B3\src\B3ButcherManageClient\ButcherOrder\bin\Debug\ButcherOrder"), new Tuple("过磅员",@"C:\B3\src\B3ButcherManageClient\ButcherWeight\bin\Debug\ButcherWeight"), new Tuple("验质员",@"C:\B3\src\B3ButcherManageClient\QualityAndOrder\bin\Debug\QualityAndOrder"), //new Tuple("定级员",@"C:\B3\src\B3ButcherManageClient\WeighAndGrading\bin\Debug\WeighAndGrading"), new Tuple("窒晕员",@"C:\B3\src\B3ButcherManageClient\OrderConfirm\bin\Debug\OrderConfirm"), new Tuple("定级员",@"C:\B3\src\B3ButcherManageClient\CarcassStateWeight\bin\Debug\CarcassStateWeight") }; 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; } } }