c# - 施法任务使用反射到 T
问题描述
使用方法属性,我得到一个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;
}
...
解决方案
推荐阅读
- python - How to see VSCode popups for sessions in SQLAlchemy
- java - Executing python script with Runtime.getRuntime() is always return BLANK if the output is in Arabic
- stm32 - STM32F405 SPI Transmit using DMA not working
- python - SWIG、Python 和带有内联指令的接口文件
- python - 尝试使用 sheet_name=None 为文档中的每个工作表运行 python pandas 脚本但不工作
- c# - 在 C# 中人为地创建连接超时错误?
- postgresql - 是否可以使用集群外的 Dbeaver 或 SQLDeveloper 等客户端连接在 Kubernetes 集群中运行的 pgsql?
- javascript - change selected object value in an array of object
- data-warehouse - From operational data store to warehouse
- function - 如何在 julia 的模块中获取函数列表