move IMachineReflectionCall to extend method

This commit is contained in:
luosheng
2023-04-11 14:55:30 +08:00
parent ef55c5e5e5
commit 7ae3b88eaa
10 changed files with 115 additions and 73 deletions

View File

@@ -11,7 +11,7 @@ namespace Modbus.Net.Tests
public void GetUtility()
{
BaseMachine<int, int> baseMachine = new ModbusMachine<int, int>(1, ModbusType.Tcp, "192.168.3.12", null, true, 2, 0);
var utility = baseMachine.GetUtilityMethods<IUtilityMethodData>();
var utility = baseMachine.GetUtilityMethods<IUtilityMethodDatas>();
var methods = utility.GetType().GetRuntimeMethods();
Assert.AreEqual(methods.FirstOrDefault(method => method.Name == "GetDataAsync") != null, true);
Assert.AreEqual(methods.FirstOrDefault(method => method.Name == "SetDataAsync") != null, true);
@@ -22,9 +22,9 @@ namespace Modbus.Net.Tests
public async Task InvokeUtility()
{
BaseMachine<int, int> baseMachine = new ModbusMachine<int, int>(1, ModbusType.Tcp, "192.168.3.12", null, true, 2, 0);
var success = await baseMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().SetDatasAsync("4X 1", new object[] { (byte)11 });
var success = await baseMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().SetDatasAsync("4X 1", new object[] { (byte)11 });
Assert.AreEqual(success, true);
var datas = await baseMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync("4X 1", 1);
var datas = await baseMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync("4X 1", 1);
Assert.AreEqual(datas.Datas[0], 11);
baseMachine.Disconnect();
}

View File

@@ -292,18 +292,18 @@ namespace Modbus.Net.Tests
await _modbusTcpMachine!.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("4X 1", dic1["4X 1"]);
await _modbusAsciiMachine!.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("4X 1", dic1["4X 1"]);
await _modbusRtuMachine!.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("4X 1", dic1["4X 1"]);
var ans = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
var ans2 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
var ans3 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<ushort>("4X 1", 1);
var ans = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<ushort>("4X 1", 1);
var ans2 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<ushort>("4X 1", 1);
var ans3 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<ushort>("4X 1", 1);
Assert.AreEqual(ans.Datas[0], dic1["4X 1"]);
Assert.AreEqual(ans2.Datas[0], dic1["4X 1"]);
Assert.AreEqual(ans3.Datas[0], dic1["4X 1"]);
await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("0X 1", dic2["0X 1"] >= 1);
await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("0X 1", dic2["0X 1"] >= 1);
await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodWriteSingleCoil>().SetSingleCoilAsync("0X 1", dic2["0X 1"] >= 1);
var ans21 = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
var ans22 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
var ans23 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodData>().GetDatasAsync<bool>("0X 1", 1);
var ans21 = await _modbusTcpMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<bool>("0X 1", 1);
var ans22 = await _modbusRtuMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<bool>("0X 1", 1);
var ans23 = await _modbusAsciiMachine.BaseUtility.GetUtilityMethods<IUtilityMethodDatas>().GetDatasAsync<bool>("0X 1", 1);
Assert.AreEqual(ans21.Datas[0] ? 1 : 0, dic2["0X 1"]);
Assert.AreEqual(ans22.Datas[0] ? 1 : 0, dic2["0X 1"]);
Assert.AreEqual(ans23.Datas[0] ? 1 : 0, dic2["0X 1"]);