Skip to content

Commit a24fec8

Browse files
committed
QpTestClient register client type.not scan dlls.
1 parent 87d2e74 commit a24fec8

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

QpTestClient/QpClientTypeManager.cs

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,44 @@
66
using System.Linq;
77
using System.Reflection;
88
using System.Text;
9+
using System.Xml.Linq;
910

1011
namespace QpTestClient
1112
{
1213
public class QpClientTypeManager
1314
{
1415
public static QpClientTypeManager Instance { get; } = new QpClientTypeManager();
1516
private Dictionary<string, QpClientTypeInfo> dict = null;
16-
public void Init()
17+
18+
private void register<TClient>()
1719
{
18-
dict = new Dictionary<string, QpClientTypeInfo>();
19-
foreach (var dllFile in Directory.GetFiles(".", $"{nameof(Quick)}.{nameof(Quick.Protocol)}.*.dll"))
20-
{
21-
var assembly = Assembly.Load(Path.GetFileNameWithoutExtension(dllFile));
22-
foreach (var type in assembly.GetTypes())
23-
{
24-
if (!type.IsClass || !typeof(QpClient).IsAssignableFrom(type))
25-
continue;
20+
register(typeof(TClient));
21+
}
2622

27-
var typeConstructor = type.GetConstructors()[0];
28-
var typeConstructorParameters = typeConstructor.GetParameters();
29-
if (typeConstructorParameters == null || typeConstructorParameters.Length != 1)
30-
continue;
31-
var optionsType = typeConstructorParameters[0].ParameterType;
32-
var name = type.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName ?? type.Name;
23+
private void register(Type type)
24+
{
25+
var typeConstructor = type.GetConstructors()[0];
26+
var typeConstructorParameters = typeConstructor.GetParameters();
27+
if (typeConstructorParameters == null || typeConstructorParameters.Length != 1)
28+
return;
29+
var optionsType = typeConstructorParameters[0].ParameterType;
30+
var name = type.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName ?? type.Name;
31+
dict[type.FullName] = new QpClientTypeInfo()
32+
{
33+
Name = name,
34+
QpClientType = type,
35+
QpClientOptionsType = optionsType
36+
};
37+
}
3338

34-
dict[type.FullName] = new QpClientTypeInfo()
35-
{
36-
Name = name,
37-
QpClientType = type,
38-
QpClientOptionsType = optionsType
39-
};
40-
}
41-
}
39+
public void Init()
40+
{
41+
dict = new Dictionary<string, QpClientTypeInfo>();
42+
register<Quick.Protocol.Tcp.QpTcpClient>();
43+
register<Quick.Protocol.Udp.QpUdpClient>();
44+
register<Quick.Protocol.Pipeline.QpPipelineClient>();
45+
register<Quick.Protocol.SerialPort.QpSerialPortClient>();
46+
register<Quick.Protocol.WebSocket.Client.QpWebSocketClient>();
4247
}
4348

4449
public QpClientTypeInfo Get(string qpClientTypeName)

0 commit comments

Comments
 (0)