protected T GetParamValue <T>(EpsTaskParams paramType, object subvalue = null, T defaultValue = default(T)) where T : IConvertible { var param = FindByName(paramType, subvalue); if (param == null || ParamIsEmpty(param)) { return(defaultValue); } return(param.Value.To <T>()); }
protected IList <T> GetAllParamValues <T>(EpsTaskParams paramType, object subvalue = null, T defaultValue = default(T)) where T : IConvertible { var prms = subvalue == null ? Params.Where(p => p != null && p.Name.To(EpsTaskParams.None) == paramType) : Params.Where(p => p != null && p.Name.To(EpsTaskParams.None) == paramType && Equals(p.Subvalue, subvalue)); var list = new List <T>(); foreach (var prm in prms) { if (ParamIsEmpty(prm)) { continue; } list.Add(prm.Value.To <T>()); } return(list); }
/// <summary> /// Поиск параметра по имени. /// </summary> /// <param name="paramType">имя типа параметра</param> /// <param name="subvalue"></param> /// <returns>объект параметра</returns> public ParamMap FindByName(EpsTaskParams paramType, object subvalue = null) // Коллеги, а не лучше ли использовать SortedList ? { return(subvalue == null ? Params.FirstOrDefault(p => p.Name.To(EpsTaskParams.None) == paramType) : Params.FirstOrDefault(p => p.Name.To(EpsTaskParams.None) == paramType && Equals(p.Subvalue, subvalue))); }