Вы не можете этого сделать.Самое близкое, что вы могли бы получить, это:
Func<T, T, bool> ConvertToBinaryConditionOperator<T>(string op)
, а затем:
if (ConvertToBinaryConditionOperator<int>(input)(a, b))
{
}
Хитрый бит - это то, что сделает ConvertToBinaryConditionOperator
.Возможно, вы захотите взглянуть на работу Марка Гравелла по реализации универсальных операторов в MiscUtil .Деревья выражений могут быть действительно полезны в этом случае, хотя я считаю, что у Марка есть рабочий подход, который работает и в .NET 2.
Так что в этом случае у вас может быть что-то вроде (используя MiscUtil )
public static Func<T, T, bool> ConvertToBinaryConditionOperator<T>(string op)
{
switch (op)
{
case "<": return Operator.LessThan<T>;
case ">": return Operator.GreaterThan<T>;
case "==": return Operator.Equal<T>;
case "<=": return Operator.LessThanOrEqual<T>;
// etc
default: throw new ArgumentException("op");
}
}