public static TCriteria MapTo <TCriteriaSetEntity, TCriteriaEntity, TCriteria>(this TCriteriaSetEntity entity, string type, ICriteriaPersister criteriaPersister, bool persistantIsString) where TCriteriaSetEntity : ICriteriaSetEntity <TCriteriaEntity> where TCriteriaEntity : class, ICriteriaEntity where TCriteria : Criteria { // Create first. var criteria = criteriaPersister.CreateCriteria <TCriteria>(type); criteria.Id = entity.id; criteriaPersister.OnLoading(criteria); foreach (var criteriaEntity in entity.Entities) { try { criteria.SetPersistantItem(criteriaEntity.name, criteriaEntity.value, persistantIsString); } catch (Exception ex) { throw new ApplicationException("Could not set the criteria item with name '" + criteriaEntity.name + "'.", ex); } } criteriaPersister.OnLoaded(criteria); return(criteria); }
void ICriteriaPersister.OnLoaded(Criteria criteria) { if (criteria is EmployerSearchCriteria) { _employerPersister.OnLoaded(criteria); } else if (criteria is MemberSearchCriteria) { _memberPersister.OnLoaded(criteria); } }