Имам обща дефиниция на команда с един аргумент, който връща някаква стойност
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 за компилиране на това, но не иска.
Има ли някакъв начин да стартирате този тип общи методи с един общ аргумент?