使用方法属性,我得到一个IEnumerable<Delegate>
。我想给每个人打电话,现在我使用DynamicInvoke
并得到结果。但是,某些方法可以是async
并返回Task
的值。我真的不在乎那是什么,我只想使用Newtonsoft对其进行序列化。
如何处理同步和异步方法?
我当时正在考虑检查返回类型是实现Task
还是Task<T>
,但是由于我不知道T
,因此我不确定这样做是否是一个好方法
现在,我的代码不支持异步方法,如下所示:
protected string Invoke(Delegate method, params object[] args) {
return JsonConvert.SerializeObject(method.DynamicInvoke(args));
}
protected void onRequest(Request request) {
// Some logic
Send(Invoke(request.Method, request.Arguments));
}
方法如下:
[RequestHandler("sell")]
private async Task<SellResponse> Sell(SellItemRequest request) {
// Some asynchonous logic
var response = new SellResponse {
sucess = true,
price = request.Price
};
return response;
}
[RequestHandler("buy")]
private BuyResponse Buy(BuyItemRequest request) {
// Some logic
var response = new {
sucess = true,
price = request.Price
};
return response;
}
...