public void SpecReadInContextTest() { SpecFile spec = SpecFile.ParseContractFile("..\\..\\Contracts\\test.RnR", SpecFileFormat.Ini); string testBytesStr = @"03 F2 00 00 00 08 00 00 00 04 C8 02 00 B8"; byte[] readBytes = TypeCache.HexPatternStringToByteArray(testBytesStr); MemoryStream readSrc = new MemoryStream(readBytes); MemoryStream writeSrc = new MemoryStream(); using (StreamContext sc = new StreamContext(spec, readSrc, writeSrc)) { Dictionary <string, object> ReqDict = sc.GetContextRequest(); if (!SpecData.ReadAs <short>(ReqDict, "ESP_SuccessFlag").Equals((short)1010)) { Console.WriteLine("*读取数据错误!"); } else { sc.SetPosition(0); Dictionary <string, object> result = new Dictionary <string, object>(StringComparer.InvariantCultureIgnoreCase); //result["ESP_SuccessFlag"] = (short)1010; result["ESP_SuccessFlag"] = "Success"; result["ESP_CustomCode"] = (int)0008; result["ESP_LeaveLength"] = (int)4; result["ESP_TransferData"] = TypeCache.HexPatternStringToByteArray(@"C8 02 00 B8"); sc.WriteContextResponse(result); } if (writeSrc.Length > 0) { string result = TypeCache.ByteArrayToHexString(writeSrc.ToArray()); Console.WriteLine(result); Debug.Assert(testBytesStr == result); } else { Console.WriteLine("*没有写入数据!"); } writeSrc.Dispose(); } }