I am trying to create a class implementing the generic IComparer of my own class “Stellungen” (which translates to positions, like on a chess or checkers board).
This is what I got:
Private Class comparer(Of Stellung)
Implements System.Collections.Generic.IComparer(Of Stellung)
Public Function Compare(x As Stellung, y As Stellung) As Integer Implements System.Collections.Generic.IComparer(Of Stellung).Compare
End Function
End Class
Problem is: inside the function I have no access to any fields of my class. If I start off with x. Intellisense will only give me .Equals, .GetHashCode – the methods you get on a type but not on an instance.
Visual Studio 10 also highights this, in the definition of the function the bits “x as Stellung” and “y as Stellung” are written in light blue, meaning it is a type and not an actual object.
So… what do I do?? How do I access the things I want to compare inside my class??
Thanks!
The fields are probably private and that is why you cant access them.
Make you classes implement the
IComparable<T>interface. You can than use that in you comparer class.Here is an example of a generic comparer class that compares objects that implements
IComparable<T>.