diff --git a/Modbus.Net/src/Base.Common/BaseConnector.cs b/Modbus.Net/src/Base.Common/BaseConnector.cs
index a237210..0d32421 100644
--- a/Modbus.Net/src/Base.Common/BaseConnector.cs
+++ b/Modbus.Net/src/Base.Common/BaseConnector.cs
@@ -5,7 +5,15 @@ namespace Modbus.Net
///
/// 基础的协议连接类
///
- public abstract class BaseConnector
+ public abstract class BaseConnector : BaseConnector
+ {
+
+ }
+
+ ///
+ /// 基础的协议连接类
+ ///
+ public abstract class BaseConnector
{
///
/// 标识Connector的连接关键字
@@ -40,27 +48,27 @@ namespace Modbus.Net
///
/// 需要发送的数据
/// 是否发送成功
- public abstract bool SendMsgWithoutReturn(byte[] message);
+ public abstract bool SendMsgWithoutReturn(TParamIn message);
///
/// 无返回发送数据
///
/// 需要发送的数据
/// 是否发送成功
- public abstract Task SendMsgWithoutReturnAsync(byte[] message);
+ public abstract Task SendMsgWithoutReturnAsync(TParamIn message);
///
/// 带返回发送数据
///
/// 需要发送的数据
/// 是否发送成功
- public abstract byte[] SendMsg(byte[] message);
+ public abstract TParamOut SendMsg(TParamIn message);
///
/// 带返回发送数据
///
/// 需要发送的数据
/// 是否发送成功
- public abstract Task SendMsgAsync(byte[] message);
+ public abstract Task SendMsgAsync(TParamIn message);
}
}
\ No newline at end of file
diff --git a/Modbus.Net/src/Base.Common/BaseMachine.cs b/Modbus.Net/src/Base.Common/BaseMachine.cs
index 2a3a208..b367f3a 100644
--- a/Modbus.Net/src/Base.Common/BaseMachine.cs
+++ b/Modbus.Net/src/Base.Common/BaseMachine.cs
@@ -594,8 +594,7 @@ namespace Modbus.Net
if (BaseUtility is TUtilityMethod)
{
Type t = typeof(TUtilityMethod);
- object returnValue = t.GetMethod(methodName,
- BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)
+ object returnValue = t.GetRuntimeMethod(methodName, parameters.Select(p => p.GetType()).ToArray())
.Invoke(BaseUtility, parameters);
return (TReturnType) returnValue;
}
@@ -616,8 +615,7 @@ namespace Modbus.Net
if (this is TMachineMethod)
{
Type t = typeof(TMachineMethod);
- object returnValue = t.GetMethod(methodName,
- BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)
+ object returnValue = t.GetRuntimeMethod(methodName, parameters.Select(p => p.GetType()).ToArray())
.Invoke(this, parameters);
return (TReturnType) returnValue;
}
diff --git a/Tests/Modbus.Net.Tests/MachineMethodTest.cs b/Tests/Modbus.Net.Tests/MachineMethodTest.cs
index 0434c43..be08009 100644
--- a/Tests/Modbus.Net.Tests/MachineMethodTest.cs
+++ b/Tests/Modbus.Net.Tests/MachineMethodTest.cs
@@ -16,7 +16,7 @@ namespace Modbus.Net.Tests
{
BaseMachine baseMachine = new ModbusMachine(ModbusType.Tcp, "192.168.3.12", null, true, 2, 0);
var utility = baseMachine.GetUtility();
- var methods = utility.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+ var methods = utility.GetType().GetRuntimeMethods();
Assert.AreEqual(methods.FirstOrDefault(method => method.Name == "GetTimeAsync") != null, true);
Assert.AreEqual(methods.FirstOrDefault(method => method.Name == "SetTimeAsync") != null, true);
}