// получить все элементы c заданным значением аттрибута public XHEInterfaces get_all_by_attribute(string attr_name, string attr_value, int exactly = 0, string frame = "-1") { // получим номера элементов для нового списка List <int> aNeedNums = new List <int>(); for (int i = 0; i < elements.Count; i++) { if (compare_string(exactly == 1, ((XHEInterface)elements[i]).get_attribute(attr_name), attr_value)) { aNeedNums.Add(i); } } // создадим новый список XHEInterfaces new_interfaces = new XHEInterfaces("", m_Server, m_Password); // заполним его клонами элементов for (int i = 0; i < aNeedNums.Count; i++) { new_interfaces.elements.Add(elements[aNeedNums[i]].get_clone_()); new_interfaces.inner_numbers = new_interfaces.inner_numbers + new_interfaces.elements[i].inner_number; if ((i + 1) != aNeedNums.Count) { new_interfaces.inner_numbers = new_interfaces.inner_numbers + ";"; } } return(new_interfaces); }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // получить все интерфейсы по заданному условию public XHEInterfaces get_all_by_xxx(string xxx, string condition, int exactly) { Type thisType = typeof(XHEInterface); MethodInfo theMethod = thisType.GetMethod(xxx); // получим номера элементов для нового списка List <int> aNeedNums = new List <int>(); for (int i = 0; i < elements.Count; i++) { if (compare_string(exactly == 1, theMethod.Invoke(elements[i], null).ToString(), condition)) { aNeedNums.Add(i); } } // создадим новый список XHEInterfaces new_interfaces = new XHEInterfaces("", m_Server, m_Password); // заполним его клонами элементов for (int i = 0; i < aNeedNums.Count; i++) { new_interfaces.elements.Add(elements[aNeedNums[i]].get_clone_()); new_interfaces.inner_numbers = new_interfaces.inner_numbers + new_interfaces.elements[i].inner_number; if ((i + 1) != aNeedNums.Count) { new_interfaces.inner_numbers = new_interfaces.inner_numbers + ";"; } } return(new_interfaces); }