Нет, ваш анализ и решение выглядят правильно. Действительно, вывод обобщенного типа может работать только на основе «все или ничего». Если есть некоторые общие параметры, которые не могут быть выведены, все должны быть явно указаны. Лично я бы очень хотел сказать: «Вы беспокоитесь об этих параметрах, я расскажу вам об этом», но ... этого не существует.
Единственный другой вариант - добавить искусственный дополнительный обычный параметр, чтобы он мог выводить универсальный параметр - немного противный.
Еще один вариант: опровергнуть предположение, что здесь нужны дженерики. Например, это может быть просто экземпляр Type
? Будет:
bool Handle<TModel>(TModel model, Type type)...
...
Handle(model, typeof(MyCommandHandler));
работа, например? Я не могу ответить на этот вопрос напрямую, так как я не знаю подробностей вашего _container.Resolve<TCommandHandler>();
метода, относительно того, можно ли , что быть скорректирован, чтобы принять Type
вместо <T>
.