Skip to content

Commit 8db0e67

Browse files
committed
代码优化
1 parent 1ad4bc7 commit 8db0e67

File tree

4 files changed

+44
-46
lines changed

4 files changed

+44
-46
lines changed

QpTestClient/ConnectForm.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void EditConnectionInfo(TestConnectionInfo connectionInfo)
2828
{
2929
this.ConnectionInfo = connectionInfo;
3030
txtName.Text = connectionInfo.Name;
31-
var qpClientTypeInfo = QpClientTypeManager.Instance.GetAll().FirstOrDefault(t => t.ClientType.FullName == connectionInfo.QpClientTypeName);
31+
var qpClientTypeInfo = QpClientTypeManager.Instance.GetAll().FirstOrDefault(t => t.TypeName == connectionInfo.QpClientTypeName);
3232
cbConnectType.SelectedItem = qpClientTypeInfo;
3333
Text = "编辑连接";
3434
}
@@ -44,7 +44,7 @@ private void ConnectForm_Load(object sender, EventArgs e)
4444
if (ConnectionInfo != null)
4545
{
4646
var qpClientTypeName = ConnectionInfo.QpClientTypeName;
47-
var item = QpClientTypeManager.Instance.GetAll().FirstOrDefault(t => t.ClientType.FullName == qpClientTypeName);
47+
var item = QpClientTypeManager.Instance.GetAll().FirstOrDefault(t => t.TypeName == qpClientTypeName);
4848
cbConnectType.SelectedItem = item;
4949
}
5050
else
@@ -56,7 +56,7 @@ private void ConnectForm_Load(object sender, EventArgs e)
5656
private void cbConnectType_SelectedIndexChanged(object sender, EventArgs e)
5757
{
5858
var qpClientTypeInfo = (QpClientTypeInfo)cbConnectType.SelectedItem;
59-
if (ConnectionInfo != null && qpClientTypeInfo.ClientType.FullName == ConnectionInfo.QpClientTypeName)
59+
if (ConnectionInfo != null && qpClientTypeInfo.TypeName == ConnectionInfo.QpClientTypeName)
6060
{
6161
clientOptions = ConnectionInfo.QpClientOptions.Clone();
6262
}
@@ -84,7 +84,7 @@ private void btnOk_Click(object sender, EventArgs e)
8484
ConnectionInfo = new TestConnectionInfo()
8585
{
8686
Name = name,
87-
QpClientTypeName = qpClientTypeInfo.ClientType.FullName,
87+
QpClientTypeName = qpClientTypeInfo.TypeName,
8888
QpClientOptions = clientOptions,
8989
Instructions = ConnectionInfo?.Instructions
9090
};

QpTestClient/QpClientTypeInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
using Quick.Protocol;
33
using System;
44
using System.Collections.Generic;
5-
using System.Text;
6-
using System.Windows.Forms;
5+
using System.IO;
76

87
namespace QpTestClient
98
{
109
public class QpClientTypeInfo
1110
{
11+
public string TypeName { get; set; }
1212
public string Name { get; set; }
13-
public Type ClientType { get; set; }
1413
public Func<QpClientOptions> CreateOptionsInstanceFunc { get; set; }
1514
public Func<ClientOptionsControl> CreateOptionsControlFunc { get; set; }
15+
public Func<Stream, QpClientOptions> DeserializeQpClientOptions { get; set; }
1616
public override string ToString() => Name;
1717
}
1818
}

QpTestClient/QpClientTypeManager.cs

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using System.Reflection;
99
using System.Text;
10+
using System.Text.Json;
1011
using System.Windows.Forms;
1112
using System.Xml.Linq;
1213

@@ -17,38 +18,46 @@ public class QpClientTypeManager
1718
public static QpClientTypeManager Instance { get; } = new QpClientTypeManager();
1819
private Dictionary<string, QpClientTypeInfo> dict = null;
1920

20-
private void register(Type clientType, Func<QpClientOptions> createOptionsInstanceFunc, Func<ClientOptionsControl> createOptionsControlFunc)
21+
private void register(QpClientTypeInfo qpClientTypeInfo)
2122
{
22-
var clientTypeFullName = clientType.FullName;
23-
var name = clientType.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName ?? clientTypeFullName;
24-
dict[clientTypeFullName] = new QpClientTypeInfo()
25-
{
26-
Name = name,
27-
ClientType = clientType,
28-
CreateOptionsInstanceFunc = createOptionsInstanceFunc,
29-
CreateOptionsControlFunc = createOptionsControlFunc
30-
};
23+
dict[qpClientTypeInfo.TypeName] = qpClientTypeInfo;
3124
}
3225

3326
public void Init()
3427
{
3528
dict = new Dictionary<string, QpClientTypeInfo>();
36-
register(
37-
typeof(Quick.Protocol.Tcp.QpTcpClient),
38-
() => new Quick.Protocol.Tcp.QpTcpClientOptions(),
39-
() => new Controls.ClientOptions.TcpClientOptionsControl());
40-
register(
41-
typeof(Quick.Protocol.Pipeline.QpPipelineClient),
42-
() => new Quick.Protocol.Pipeline.QpPipelineClientOptions(),
43-
() => new Controls.ClientOptions.PipelineClientOptionsControl());
44-
register(
45-
typeof(Quick.Protocol.SerialPort.QpSerialPortClient),
46-
() => new Quick.Protocol.SerialPort.QpSerialPortClientOptions(),
47-
() => new Controls.ClientOptions.SerialPortClientOptionsControl());
48-
register(
49-
typeof(Quick.Protocol.WebSocket.Client.QpWebSocketClient),
50-
() => new Quick.Protocol.WebSocket.Client.QpWebSocketClientOptions(),
51-
() => new Controls.ClientOptions.WebSocketClientOptionsControl());
29+
register(new QpClientTypeInfo()
30+
{
31+
TypeName = typeof(Quick.Protocol.Tcp.QpTcpClient).FullName,
32+
Name = "TCP",
33+
CreateOptionsControlFunc = () => new Controls.ClientOptions.TcpClientOptionsControl(),
34+
CreateOptionsInstanceFunc = () => new Quick.Protocol.Tcp.QpTcpClientOptions(),
35+
DeserializeQpClientOptions = stream => JsonSerializer.Deserialize(stream, Quick.Protocol.Tcp.QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions)
36+
});
37+
register(new QpClientTypeInfo()
38+
{
39+
TypeName = typeof(Quick.Protocol.Pipeline.QpPipelineClient).FullName,
40+
Name = "命名管道",
41+
CreateOptionsControlFunc = () => new Controls.ClientOptions.PipelineClientOptionsControl(),
42+
CreateOptionsInstanceFunc = () => new Quick.Protocol.Pipeline.QpPipelineClientOptions(),
43+
DeserializeQpClientOptions = stream => JsonSerializer.Deserialize(stream, Quick.Protocol.Pipeline.QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions)
44+
});
45+
register(new QpClientTypeInfo()
46+
{
47+
TypeName = typeof(Quick.Protocol.SerialPort.QpSerialPortClient).FullName,
48+
Name = "串口",
49+
CreateOptionsControlFunc = () => new Controls.ClientOptions.SerialPortClientOptionsControl(),
50+
CreateOptionsInstanceFunc = () => new Quick.Protocol.SerialPort.QpSerialPortClientOptions(),
51+
DeserializeQpClientOptions = stream => JsonSerializer.Deserialize(stream, Quick.Protocol.SerialPort.QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions)
52+
});
53+
register(new QpClientTypeInfo()
54+
{
55+
TypeName = typeof(Quick.Protocol.WebSocket.Client.QpWebSocketClient).FullName,
56+
Name = "WebSocket",
57+
CreateOptionsControlFunc = () => new Controls.ClientOptions.WebSocketClientOptionsControl(),
58+
CreateOptionsInstanceFunc = () => new Quick.Protocol.WebSocket.Client.QpWebSocketClientOptions(),
59+
DeserializeQpClientOptions = stream => JsonSerializer.Deserialize(stream, Quick.Protocol.WebSocket.Client.QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions)
60+
});
5261
}
5362

5463
public QpClientTypeInfo Get(string qpClientTypeName)

QpTestClient/Utils/QpdFileUtils.cs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,8 @@ public static TestConnectionInfo Load(string file)
7575
entry = zipArchive.GetEntry(typeof(QpClientOptions).FullName);
7676
using (var stream = entry.Open())
7777
{
78-
QpClientOptions options = null;
79-
if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.Tcp.QpTcpClient).FullName)
80-
options = JsonSerializer.Deserialize(stream,
81-
Quick.Protocol.Tcp.QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions);
82-
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.Pipeline.QpPipelineClient).FullName)
83-
options = JsonSerializer.Deserialize(stream,
84-
Quick.Protocol.Pipeline.QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions);
85-
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.SerialPort.QpSerialPortClient).FullName)
86-
options = JsonSerializer.Deserialize(stream,
87-
Quick.Protocol.SerialPort.QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions);
88-
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.WebSocket.Client.QpWebSocketClient).FullName)
89-
options = JsonSerializer.Deserialize(stream,
90-
Quick.Protocol.WebSocket.Client.QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions);
78+
var qpClientTypeInfo = QpClientTypeManager.Instance.Get(testConnectionInfo.QpClientTypeName);
79+
QpClientOptions options = qpClientTypeInfo.DeserializeQpClientOptions(stream);
9180
testConnectionInfo.QpClientOptions = options;
9281
}
9382
}

0 commit comments

Comments
 (0)