c# - 如何访问包装在 Task<> 中的对象属性?
问题描述
我试图访问 UpdateUser(userModelFromRepo) 中用户的属性,当我更改参数以接受任务时,我无法访问 User.modifiedAt 属性。有没有办法这样做?或者,有没有办法只返回用户对象并与 GetUserById() 保持异步?await _repository.UpdateUser(userModelFromRepo)表示它无法从任务用户转换为用户。
[HttpPut("{id}")]
public async Task<ActionResult> UpdateUser(int id, UserUpdateDto userUpdateDto)
{
var userModelFromRepo = _repository.GetUserById(id);
if (userModelFromRepo == null)
{
return NotFound();
}
await _mapper.Map(userUpdateDto, userModelFromRepo);
await _repository.UpdateUser(userModelFromRepo);
await _repository.SaveChanges();
return NoContent();
}
public async Task<User> GetUserById(int id)
{
return await _context.User.FirstOrDefaultAsync(u => u.Id == id);
}
public async Task UpdateUser(User userModelFromRepo)
{
await Task.Run(() =>
{
if (user == null)
{
throw new ArgumentNullException(nameof(user));
}
user.ModifiedAt = DateTime.UtcNow;
});
}
解决方案
你需要像这样等待电话
var userModelFromRepo = await _repository.GetUserById(id);
完整代码:
[HttpPut("{id}")]
public async Task<ActionResult> UpdateUser(int id, UserUpdateDto userUpdateDto)
{
var userModelFromRepo = await _repository.GetUserById(id);
if (userModelFromRepo == null)
{
return NotFound();
}
await _mapper.Map(userUpdateDto, userModelFromRepo);
await _repository.UpdateUser(userModelFromRepo);
await _repository.SaveChanges();
return NoContent();
}
此外,如果您在 UpdateUser 方法中不做任何其他事情,您可以删除 Task.Run 的东西,它不会增加任何价值。
public Task UpdateUser(User userModelFromRepo)
{
if (user == null)
{
throw new ArgumentNullException(nameof(user));
}
user.ModifiedAt = DateTime.UtcNow;
return Task.CompletedTask;
}
推荐阅读
- javascript - 无法在 JavaScript 中连接阿拉伯字母
- python - “文件 txt 的子目录已经存在。” 尝试对文件进行排序时出错,即使没有文件名“txt”
- prometheus - Prometheus 中的 Zipkin 痕迹
- r - 将表达式传递给函数时丢弃 on.exit() 回调
- python - python:更新 MongoDB 文档
- python - 机器学习分类:将预测列附加/附加到具有匹配索引号的原始 sataset
- javascript - 在 nativescript 中触发 socketio 事件后如何将新项目推送到 lisview
- python - 想用keyboardstyle sys.stdout.write(char) 将文本写入Tkinter 界面
- python - 数组中的最高排名数,Python 3
- python - 通过从旧的(经过训练的)模型调用创建新的 Keras 模型,新模型摘要已折叠,如何展开新模型