Вам нужен ваш класс для реализации IComparable
, а затем переопределите и реализуйте метод CompareTo
, чтобы помочь C # понять, как он должен сравнивать эти объекты.
В качестве примера я хочу сравнить два виджета.Это сложный класс, который содержит как целое число, так и строку.Я считаю, что сочетание целого числа и длины строки будет определять, какой объект больше.
Class MyWidget : IComparable
{
public int Piece { get; set; }
public string Thing { get; set; }
public MyWidget()
{
this.Piece = 1;
this.Thing = "default";
}
public int CompareTo(object obj)
{
var otherWidget = obj as MyWidget;
if (otherWidget != null)
{
return (this.Piece + this.Thing.Length).CompareTo(otherWidget.Piece + otherWidget.Thing.Length);
}
else
{
throw new ArgumentException("Object is not a MyWidget");
}
}
}