using Common.Helper; using Common.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Common.Factory { public static class UIFactory { //public static UserControl GetInitialConfigCtrl(string typeName, IInitialConfig config) //{ // Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, EnumHelper.DeviceAttributeType.InitialConfigCtrl); // if (type == null) // { // return null; // } // return Activator.CreateInstance(type, config) as UserControl; //} //public static UserControl GetDeviceConfigCtrl(string typeName, IDeviceConfig config) //{ // Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, EnumHelper.DeviceAttributeType.DeviceConfigCtrl); // if (type == null) // { // return null; // } // return Activator.CreateInstance(type, config) as UserControl; //} //public static UserControl GetOperationConfigCtrl(string typeName, IOperationConfig config) //{ // Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, EnumHelper.DeviceAttributeType.OperationConfigCtrl); // if (type == null) // { // return null; // } // return Activator.CreateInstance(type, config) as UserControl; //} //public static UserControl GetInputConfigCtrl(string typeName, IInputConfig config) //{ // Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, EnumHelper.DeviceAttributeType.InputConfigCtrl); // if (type == null) // { // return null; // } // return Activator.CreateInstance(type, config) as UserControl; //} public static UserControl GetConfigCtrl(string typeName, T t, IDevice device = null) { string interfaceName = typeof(T).Name; EnumHelper.DeviceAttributeType ctrlType; switch (interfaceName) { case "IInitialConfig": ctrlType = EnumHelper.DeviceAttributeType.InitialConfigCtrl; break; case "IDeviceConfig": ctrlType = EnumHelper.DeviceAttributeType.DeviceConfigCtrl; break; case "IOperationConfig": ctrlType = EnumHelper.DeviceAttributeType.OperationConfigCtrl; break; case "IInputConfig": ctrlType = EnumHelper.DeviceAttributeType.InputConfigCtrl; break; default: throw new Exception("传入的配置参数类型不正确"); } Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, ctrlType); if (type == null) { return null; } switch (interfaceName) { case "IInitialConfig": case "IDeviceConfig": case "IInputConfig": return Activator.CreateInstance(type, t) as UserControl; case "IOperationConfig": return Activator.CreateInstance(type, t, device) as UserControl; default: return null; } } public static UserControl GetRunCtrl(string typeName, IDevice device = null, IOperationConfig config = null) { EnumHelper.DeviceAttributeType ctrlType = EnumHelper.DeviceAttributeType.RunCtrl; Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, ctrlType); if (type == null) { return null; } return Activator.CreateInstance(type, config, device) as UserControl; } public static UserControl GetOperationConfigPanel(string typeName, IOperationConfig config, IDevice device) { EnumHelper.DeviceAttributeType ctrlType = EnumHelper.DeviceAttributeType.OperationConfigPanel; Type type = FactoryHelper.GetTypeByDeviceAttribute(typeName, ctrlType); if (type == null) { return null; } return Activator.CreateInstance(type, config, device) as UserControl; } } }