예제 #1
0
 public void Insert(int index, Parameter parameter)
 {
     InnerList.Insert(index, parameter);
 }
예제 #2
0
 public void Remove(Parameter parameter)
 {
     InnerList.Remove(parameter);
 }
예제 #3
0
 public void Add(Parameter parameter)
 {
     if (string.IsNullOrEmpty(parameter.Name))
     {
         throw new Exception("参数名称不能为空。");
     }
     if (innerList == null)
     {
         innerList = new IgnoreCaseStringHashList();
     }
     innerList.Add(parameter.Name, parameter);
 }
예제 #4
0
 public void Add(Parameter parameter)
 {
     InnerList.Add(parameter);
 }
예제 #5
0
 public Parameter AddOrReplace(string parameterName, object value)
 {
     if (string.IsNullOrEmpty(parameterName))
     {
         throw new Exception("参数名称不能为空。");
     }
     Parameter parameter = this[parameterName];
     if (parameter == null)
     {
         parameter = new Parameter(parameterName, value);
         Add(parameter);
     }
     else
     {
         parameter.Value = value;
     }
     return parameter;
 }
예제 #6
0
        public Parameter Clone()
        {
            Parameter parameter = new Parameter();

            parameter.Assign(this);

            return parameter;
        }
예제 #7
0
 public void Assign(Parameter parameter)
 {
     _name = parameter._name;
     _label = parameter._label;
     _dataType = parameter._dataType;
     _value = parameter._value;
 }
예제 #8
0
        public static Parameter GetParameter(byte[] frameBytes, ref int index)
        {
            Parameter parameter = new Parameter();
            //获取参数名称。
            parameter.Name = GetString(frameBytes, ref index);
            //获取参数标签。
            parameter.Label = GetString(frameBytes, ref index);
            //获取参数类型。
            parameter.DataType = GetInt32(frameBytes, index);
            DataType dataType = DataTypeRegistry.GetDataTypeById(parameter.DataType);
            //检查参数类型。
            if (dataType == null)
            {
                throw new Exception("无法识别的数据类型标识:" + parameter.DataType);
            }
            index = index + 4;
            //获取参数值长度。
            int length = GetInt32(frameBytes, index);
            index = index + 4;
            //获取参数值。
            if (length > 0)
            {
                byte[] bytes = ByteArrayUtil.CopyArray(frameBytes, index, length);
                parameter.Value = dataType.FromBinary(bytes, 0);
                index = index + bytes.Length;
            }

            return parameter;
        }
예제 #9
0
 public static void FillByteList(IList byteList, Parameter parameter)
 {
     //获取参数类型。
     DataType dataType = DataTypeRegistry.GetDataTypeById(parameter.DataType);
     //检查参数类型。
     if (dataType == null)
     {
         throw new Exception("无法识别的数据类型标识:" + parameter.DataType);
     }
     //填充参数名称。
     FillByteList(byteList, parameter.Name, true);
     //填充参数标签。
     FillByteList(byteList, parameter.Label, true);
     //填充参数类型。
     FillByteList(byteList, parameter.DataType);
     //获取参数值字节数组。
     byte[] bytes = dataType.ToBinary(parameter.Value);
     //填充参数值长度。
     FillByteList(byteList, bytes == null ? 0 : bytes.Length);
     //填充参数值。
     if (bytes != null)
     {
         for (int i = 0; i < bytes.Length; i++)
         {
             byteList.Add(bytes[i]);
         }
     }
 }