public static Model cloneModel(Model origin) { if (origin == null) { return(null); } Model clonedModel = new Model(); //clone OptionalDesc clonedModel.description = OptionalDesc.clonedDescription(origin.description); //clone returnedString clonedModel.returnString = StringType.clonedString(origin.returnString); //clone receivedString clonedModel.receivedString = StringType.clonedString(origin.receivedString); //clone subModels if (origin.subModel != null) { clonedModel.subModel = new List <Model>(); for (int i = 0; i < origin.subModel.Count; i++) { Object _subMod = origin.subModel.ElementAt(i); if (_subMod.GetType() == typeof(StringType)) { clonedModel.subModel.Add(StringType.clonedString((StringType)_subMod)); } else if (_subMod.GetType() == typeof(Model)) { clonedModel.subModel.Add(Model.cloneModel((Model)_subMod)); } } } return(clonedModel); }
//Clone StoreOptional //Clone Quantative //Clone Model/SubModel public static Model cloneModel(Model _model) { Model modelCloned = new Model(new OptionalDesc(), new List <Model>()); //Clone OptionalDescription modelCloned.description = OptionalDesc.clonedDescription(_model.description); //Clone ConstraintOnModel //Clone Tag if (_model.description.tag != null) { modelCloned.description.tag = (Tag)CloneModel.cloneString(_model.description.tag); } //Clone Name if (_model.description.name != null) { modelCloned.description.name = CloneModel.cloneString(_model.description.name); } //CLone ... others //Clone receivedString if (_model.receivedString != null) { modelCloned.receivedString = CloneModel.cloneString(_model.receivedString); } //Clone returnedString; if (_model.returnString != null) { modelCloned.returnString = CloneModel.cloneString(_model.returnString); } //Clone subModel list if (_model.subModel == null) { return(modelCloned); } int subModelSize = _model.subModel.Count; if (subModelSize == 0) { modelCloned.subModel = new List <Model>(); } else if (subModelSize > 0) { for (int i = 0; i < subModelSize; i++) { if (_model.subModel.ElementAt(i).GetType() == typeof(StringType)) { modelCloned.subModel.Add(CloneModel.cloneString((StringType)_model.subModel.ElementAt(i))); } else { modelCloned.subModel.Add(CloneModel.cloneModel((Model)_model.subModel.ElementAt(i))); } } } return(modelCloned); }