using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using InABox.Core; namespace InABox.Mobile { public class ShellColumns : IShellColumns where TEntity : Entity { private static Dictionary>>> _columns = new Dictionary>>> (); public int IndexOf(string name) => _columns[name].Item1; public Expression> this[string name] => _columns[name].Item2; public ShellColumns Map(string property, Expression> expression) { int iCol = _columns.TryGetValue(property, out var column) ? column.Item1 : _columns.Keys.Count; _columns[property] = new Tuple>>(iCol, expression); //_columns[property] = new Tuple>>(_columns.Keys.Count, expression); return this; } public Columns Columns => new Columns(_columns.Select(x => x.Value.Item2).ToArray()); public int Count => _columns.Count; } }