Синтаксический сахар для двойной универсальной функции

У меня есть следующая функция в C #:

bool Handle<TCommandHandler, TModel>(TModel model) where TCommandHandler : ICommandHandler<TModel> {
    // ...
    _container.Resolve<TCommandHandler>();
    // ...
}

Поскольку TModel ясно из параметра функции, я хочу каким-то образом не указывать его тип, когда вызов функции. В идеале я хочу назвать это так:

Handle<MyCommandHandler>(model);

Поскольку это, вероятно, невозможно, я придумал следующее:

HandleTemp<TModel> Handle<TModel>(TModel model) {
    return new HandleTemp<TModel>(model);
}

public class HandleTemp<TModel> {
    private TModel _model;
    public HandleTemp(TModel model) { _model = model;}

    public bool With<TCommandHandler>() where TCommandHandler : ICommandHandler<TModel> {
    }
}

Итак, теперь я называю это так:

Handle(model).With<MyCommandHandler>();

Есть ли другие возможности? Я ошибся в своем решении?

6
задан Shaddix 4 October 2011 в 07:23
поделиться