Есть ли у классов Comparer логическая переменная-член с именем типа SortAscending, и она позволяет указывать это значение в конструкторе.
Например, ваш класс FileInfoDateComparer будет выглядеть следующим (непроверенным) кодом:
Class FileInfoDateComparer
Implements IComparer
Private _SortAscending As Boolean = True
Public Sub New(sortAscending As Boolean)
_SortAscending = sortAscending
End Sub
...
End Class
После этого остается только поменять местами значения oX и oY перед вызовом CompareTo IF SortAscending = False.
Public Overridable Overloads Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim oX As FileInfo = CType(x, FileInfo)
Dim oY As FileInfo = CType(y, FileInfo)
If _SortAscending = False Then
Dim temp As FileInfo = oX
oX = oY
oY = temp
End If
Return oX.LastWriteTime.CompareTo(oY.LastWriteTime)
End Function
Это нужно сделать! К вашему сведению, вышеприведенный код был введен с манжеты, поэтому там может быть синтаксическая ошибка, но концепция обоснована - я сам много раз использовал ее в прошлых проектах.
Один последний комментарий - если вы используете .NET 3.5+, вы можете использовать синтаксис LINQ to Objects вместо того, чтобы создавать собственный класс Comparer, если вы этого хотите ...
Счастливое программирование ...