using System; using System.Collections.Generic; using System.ComponentModel; namespace mRemoteNG.Connection { public class ConnectionInfoComparer : IComparer where TProperty : IComparable { private readonly Func _sortExpression; public ListSortDirection SortDirection { get; set; } = ListSortDirection.Ascending; public ConnectionInfoComparer(Func sortExpression) { _sortExpression = sortExpression; } public int Compare(ConnectionInfo x, ConnectionInfo y) { return SortDirection == ListSortDirection.Ascending ? CompareAscending(x, y) : CompareDescending(x, y); } private int CompareAscending(ConnectionInfo x, ConnectionInfo y) { return _sortExpression(x).CompareTo(_sortExpression(y)); } private int CompareDescending(ConnectionInfo x, ConnectionInfo y) { return _sortExpression(y).CompareTo(_sortExpression(x)); } } }