/// <summary> /// Осуществляет поиск колекции переменных в колекции /// </summary> /// <param name="name">Название переменной</param> /// <returns>Объект колекции переменных, в случае неудачи null/</returns> public CollectionVariable FindCollectionVariable(string name) { foreach (VariableBase variable in _variableList) { CollectionVariable collection = variable as CollectionVariable; if (collection != null && (collection.Name == name || (collection = collection.FindCollectionVariable(name)) != null)) { return(collection); } } return(null); }
/// <summary> /// Клонирование объекта значения /// </summary> /// <returns>Клон объекта</returns> public override object Clone( ) { CollectionVariable clone = new CollectionVariable(Name, IsReadOnly); foreach (VariableBase variable in _variableList) { if (variable is CollectionVariable) { clone.Add((VariableBase)variable.Clone( )); } else { clone.Add(variable); } } return(clone); }
/// <summary> /// Осуществляет рекурсивный поиск переменной в колекции /// </summary> /// <param name="name">Название переменной</param> /// <returns>Возврашает объект переменной, в случае неудачи null.</returns> public Variable FindRecursionVariable(string name) { foreach (VariableBase variable in _variableList) { Variable objectVariable = variable as Variable; if (objectVariable != null) { if (objectVariable.Name == name) { return(objectVariable); } } else { CollectionVariable collectionVariable = variable as CollectionVariable; if ((objectVariable = collectionVariable.FindRecursionVariable(name)) != null) { return(objectVariable); } } } return(null); }