У меня есть фрагмент кода, который в настоящее время выглядит следующим образом:
Подпись метода Subscribe:
void Subscribe<T, TResult>(Func<T, TResult> action);
class Service {
int methodThatRequiresIntAndReturnsInt(int i) => i * 2;
}
На мой взгляд, должна быть возможность экстраполировать, какие типы для T и TReturn при попытке использовать метод подписки, однако компилятор говорит мне, что типы не могут быть выведены из использования, что означает, что я в итоге пишу этот код:
Queue.Subscribe<int, int>(Service.methodThatRequiresIntAndReturnsInt);
Мой вопрос: возможно ли это, и если да, как должна выглядеть сигнатура / использование метода, чтобы его можно было использовать без подсказок типа, например:
Queue.Subscribe(input => input * 2);
Текущая реализация выглядит так:
_commandSubscription.Subscribe<CreateUpdateCommand, bool>(Resolve<UpdateService>().CreateUpdate);
_commandSubscription.Subscribe<AddCommentCommand>(Resolve<UpdateService>().AddComment);
реализации для методов обслуживания следующие:
public class UpdateService {
public void AddComment(AddCommentCommand command) {
// DO STUFF
}
public bool CreateUpdate(CreateUpdateCommand command) {
// Do stuff
return true;
}
}