/// <summary> /// 根据协议规定获取指定值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="defineName"></param> /// <param name="buffer"></param> /// <returns></returns> public static T GetValue <T>(CSDefineType defineName, params byte[] buffer) { T result = default(T); CS_Define desCD = DefineList.Find(cd => cd.defineName == defineName); if (desCD != null) { switch (desCD.defineByteNum) { case 1: byte value_byte = buffer[desCD.defineIndex]; if (value_byte is T) { result = (T)(object)value_byte; //或 (T)((object)model); } return(result); case 2: ushort value_unshort = BitConverter.ToUInt16(buffer, desCD.defineIndex); if (value_unshort is T) { result = (T)(object)value_unshort; //或 (T)((object)model); } return(result); case 4: int value_int = BitConverter.ToInt32(buffer, desCD.defineIndex); if (value_int is T) { result = (T)(object)value_int; //或 (T)((object)model); } return(result); default: break; } } return(result); }
public CS_Define(CSDefineType dn, int di, int db) { defineName = dn; defineIndex = di; defineByteNum = db; }