1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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<T>(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;
        }
    }
}