public TItem TryLocateItem(IEngineRepository <TItem> navRepository, object findValue) { TValue convertedValue = ConversionUtility.ConvertValue <TValue>(findValue); var predicate = IdentifierExpressionHelpers.GetIdentifierPredicate(_getLocatorValueExpression, convertedValue); return(navRepository.GetAllItems().Where(predicate).SingleOrDefault()); }
public Expression <Func <TItem, bool> > GetPredicate(string identifier) { try { TReturn convertedIdentifier = ConversionUtility.ConvertValue <TReturn>(identifier); return(IdentifierExpressionHelpers.GetIdentifierPredicate(_getterExpr, convertedIdentifier)); } catch (Exception ex) when(ex is FormatException || ex is InvalidCastException) { // TODO hiding exception.. includes FormatException thrown in ConversionUtility return(null); } }
public void SetNavItem(TParent parent, TNav item) { // TODO rename? not really anything to do with identifiers IdentifierExpressionHelpers.SetIdentifier(parent, _navigationExpression, item); }
public MultiExpressionIdentifierInfo([NotNull] Expression <Func <TItem, IEnumerable <TReturn> > > getterExpr) { _getterExpr = getterExpr ?? throw new ArgumentNullException(nameof(getterExpr)); _predicateGetter = identifier => IdentifierExpressionHelpers.GetAnyIdentifierPredicate(_getterExpr, identifier); }