Как вернуть из метода Generic-делегат?
Есть следующий код:
delegate bool CompareDyn<T>(T a, T b);
public enum SorterType
{
AGE,
ARTICLE,
ARTICLE_NUM,
DATE_DETENTION,
GENDER,
HEIGHT,
ID,
NAME,
TERM,
WEIGHT
}
static CompareDyn<???> GetFunction(SorterType type) //тут ошибка, не знаю что указать в <>
{
switch (type)
{
case SorterType.AGE:
case SorterType.ARTICLE_NUM:
case SorterType.DATE_DETENTION:
case SorterType.ID:
case SorterType.TERM: return Compare<int>;
case SorterType.HEIGHT:
case SorterType.WEIGHT: return Compare<float>;
case SorterType.ARTICLE:
case SorterType.NAME: return Compare<string>;
default:
return null;
}
}
public static bool Compare<T>(T val_1, T val_2)
{
dynamic dVal_1 = val_1, dVal_2 = val_2;
int compare = dVal_1.CompareTo(dVal_2);
bool bCompare = false;
if (compare > 0)
{
bCompare = true;
}
return bCompare;
}
Я хочу чтобы делегат указывал на генерик-метод, получаемый из GetFunction, в зависимости от enum значения. Но возникает ошибка:
CS0305 Using the generic type 'Sorter.CompareDyn' requires 1 type arguments
То есть я что-то должен указать в <> чтобы это работало. Есть ли выход из этой ситуации?