123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using InABox.Core;
- namespace InABox.Avalonia
- {
- public class ShellColumns<TParent,TEntity> : IShellColumns<TEntity> where TEntity : Entity
- {
-
- private static Dictionary<string, Tuple<int,Expression<Func<TEntity, object?>>>> _columns = new Dictionary<string, Tuple<int,Expression<Func<TEntity, object?>>>> ();
- public int IndexOf(string name) => _columns[name].Item1;
-
- public Expression<Func<TEntity, object?>> this[string name] => _columns[name].Item2;
- public ShellColumns<TParent,TEntity> Map(string property, Expression<Func<TEntity, object?>> expression)
- {
- int iCol = _columns.Keys.Count;
- bool bFound = _columns.TryGetValue(property, out var column);
- try
- {
- if (bFound)
- iCol = column.Item1;
- }
- catch (Exception e)
- {
-
- }
-
- _columns[property] = new Tuple<int, Expression<Func<TEntity, object?>>>(iCol, expression);
- //_columns[property] = new Tuple<int, Expression<Func<TEntity, object>>>(_columns.Keys.Count, expression);
- return this;
- }
- public Columns<TEntity> Columns => new Columns<TEntity>(ColumnTypeFlags.None).Add(_columns.Select(x => x.Value.Item2).ToArray());
-
- public int Count => _columns.Count;
- }
- }
|