gpt4 book ai didi

c# - 对 dto 和类对象进行逻辑检查

转载 作者:行者123 更新时间:2023-11-30 22:57:48 27 4
gpt4 key购买 nike

我继承了维护一个小型对战游戏的工作。

游戏运行正常,但当用户单击浏览器中的“结束”按钮时,游戏永远不会保存到数据库中。

此方法在通过 API 收到“HttpPut”请求后调用:

   protected override TroopMappingSession UpdateGameModel(TroopMappingSession g, TroopMappingSessionDto dto)
{
var retval = base.UpdateGameModel(g, dto);
if (dto.IsActiveBattle != null && dto.IsActiveBattle == false) {
GameService.SaveToDatabase(g);
}
return retval;
}

“dto”代表TroopMappingSessionDto,是一个数据传输对象。

“g”代表TroopMappingSession类的模型。

“retval”代表更新后的 TroopMappingSession 类模型。

就像这样,dto.IsActiveBattle 始终为“true”并且 GameService.End() 从未被调用。

如果我将 dto.IsActiveBattle == false 更改为 retval.IsActiveBattle == false,那么它确实被调用了。

我的问题是,同时检查 dto.IsActiveBattle 和 retval.IsActiveBattle 是否有意义?

我不确定为什么原始开发人员同时检查 dto.IsActiveBattle != null 和 dto.IsActiveBattle == false。

谢谢!

最佳答案

试试这个

  protected override TroopMappingSession UpdateGameModel(TroopMappingSession g, TroopMappingSessionDto dto)
{
var retval = base.UpdateGameModel(g, dto);
//if (dto.IsActiveBattle != null && dto.IsActiveBattle == false) {
GameService.SaveToDatabase(g);
//}
return retval;
}

检查游戏是否保存。这证明您的 retval 和 GameService 正在运行

然后您可以添加一些逻辑以确保它仅在例如 dto.IsActiveBattle 为 false 时保存。

重点是当 var retval = base.UpdateGameModel(g, dto) 时 dto.IsActiveBattle 可能被更改为 true;被调用了。

关于c# - 对 dto 和类对象进行逻辑检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53397797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com