public virtual CommandClass Clone(ISubscribeCollectionFactory iSubscribeCollectionFactory) { CommandClass ret = (CommandClass)MemberwiseClone(); ret.Command = null; if (Command != null) { ret.Command = iSubscribeCollectionFactory.CreateCollection <Command>(); foreach (var item in Command) { Command c = item.Clone(iSubscribeCollectionFactory); c.Parent = ret; ret.Command.Add(c); } } ret.DefineSet = null; if (DefineSet != null) { ret.DefineSet = iSubscribeCollectionFactory.CreateCollection <DefineSet>(); foreach (var item in DefineSet) { DefineSet c = item.Clone(iSubscribeCollectionFactory); c.Parent = ret; ret.DefineSet.Add(c); } } return(ret); }
public virtual DefineSet Clone(ISubscribeCollectionFactory iSubscribeCollectionFactory) { DefineSet ret = (DefineSet)MemberwiseClone(); ret.Define = null; if (Define != null) { ret.Define = iSubscribeCollectionFactory.CreateCollection <Define>(); foreach (var item in Define) { Define c = item.Clone(iSubscribeCollectionFactory); c.Parent = ret; ret.Define.Add(c); } } return(ret); }
private void ProcessParametersTextValue(IEnumerable <ParamValue> paramValues, CommandClass cmdClass) { ParamValue prevParamValue = null; foreach (var item in paramValues) { if (item.HasTextValue) { break; } if (item.InnerValues != null) { ProcessParametersTextValue(item.InnerValues, cmdClass); } if (item.ParamDefinition != null) { if (item.ParamDefinition.Defines != null && cmdClass.DefineSet != null) { Collection <Define> defines = null; DefineSet dSet = cmdClass.DefineSet.FirstOrDefault(x => x.Name == item.ParamDefinition.Defines); if (dSet != null) { defines = dSet.Define; bool isMultiarray = dSet.Define.Aggregate(true, (current, d) => current & d.Define1 != null); if (isMultiarray && prevParamValue != null) { if (prevParamValue.ByteValueList != null && prevParamValue.ByteValueList.Count > 0) { var d = dSet.Define.FirstOrDefault(x => x.KeyId == prevParamValue.ByteValueList[0]); if (d != null) { defines = d.Define1; } } } } IEnumerable <string> range = ParameterToString(item.ByteValueList, item.ParamDefinition.Type, defines); foreach (var str in range) { item.TextValueList.Add(str); item.HasTextValue = true; } } else { var paramType = item.ParamDefinition != null ? item.ParamDefinition.Type : zwParamType.HEX; IEnumerable <string> range = ParameterToString(item.ByteValueList, paramType, null); foreach (var str in range) { item.TextValueList.Add(str); item.HasTextValue = true; } } } else { var paramType = item.ParamDefinition != null ? item.ParamDefinition.Type : zwParamType.HEX; IEnumerable <string> range = ParameterToString(item.ByteValueList, paramType, null); foreach (var str in range) { item.TextValueList.Add(str); item.HasTextValue = true; } } prevParamValue = item; } }