Это похоже на слишком простой вопрос, который можно найти в Google, я думаю / надеюсь, я застрял в деталях, пытаясь реализовать свою собственную версию. То, что я пытаюсь сделать, это отсортировать список объектов MyClass в зависимости от моего объекта Datatype. Должны использоваться разные функции поиска.
Я имел в виду нечто подобное для класса Datatype:
class Datatype {
public delegate int CMPFN(object x, object y);
private CMPFN compareFunction;
(...)
private XsdDatatype((...), CMPFN compareFunction) {
(...)
this.compareFunction = compareFunction;
}
public CMPFN GetCompareFunction() {
return this.compareFunction;
}
static private int SortStrings(object a, object b) {
return ((MyClass)a).GetValue().CompareTo(((MyClass)b).GetValue());
}
}
А позже я пытаюсь отсортировать список MyClass примерно так:
List<MyClass> elements = GetElements();
Datatype datatype = new Datatype((...), Datatype.SortStrings);
elements.Sort(datatype.GetCompareFunction()); // <-- Compile error!
Я не слишком взволнован приведением в Datatype.SortStrings, но кажется, что это может сработать (?). Однако компилятор не соглашается и выдает мне эту ошибку в последней строке выше, и я немного не уверен, почему именно CMPFN нельзя преобразовать / привести (?) К IComparer.
Cannot convert type 'proj.Datatype.CMPFN' to 'System.Collections.Generic.IComparer<proj.MyClass>'