我有一段当前看起来像这样的代码:
Subscribe方法的签名:
void Subscribe<T, TResult>(Func<T, TResult> action);
class Service {
int methodThatRequiresIntAndReturnsInt(int i) => i * 2;
}
在我看来,当尝试使用subscribe方法时,应该可以推断出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;
}
}
答案 0 :(得分:1)
您可以执行以下操作:
Queue.Subscribe((int i) => Service.methodThatRequiresIntAndReturnsInt(i));
在实践中,订阅的功能等效,并且避免显式键入所有通用参数。