У меня есть общее определение команды с одним аргументом, который возвращает некоторое значение
interface ICommand<Targ, TResult> {
TResult Run(Targ argument);
}
И у меня есть интерпретатор с универсальным методом для этого типа команд
class Interpreter{
public TResult Run<TCommand, TArg, TResult>(TArg arg)
where TCommand: ICommand<TArg, TResult>, new()
{
var cmd = new TCommand();
return cmd.Run(arg);
}
Итак, я называю эти команды таким образом
var interpreter = new Interpreter();
double converted = interpreter.Run<ConvertCommand, string, double>("123.5");
куда
ConvertCommand: ICommand<string, double>
Но я хочу запускать эти команды минималистично
var interpreter = new Interpreter();
double converted = interpreter.Run<ConvertCommand>("123.5");
Кажется, что для CLR достаточно информации об общем типе для компиляции, но она этого не хочет.
Есть ли способ запустить этот тип универсальных методов с одним универсальным аргументом?