【发布时间】:2021-05-31 18:07:45
【问题描述】:
我有一个难以表达的编码问题,因此将显示代码示例。
代码 1:
public struct PlayerData {
public int PlayerScore;
}
代码 2:
public class Player {
public PlayerData PD {get; set;}
.......
}
代码 3:
public class SaveData {
....
public PlayerData Load (){
.....
}
}
最后,在代码 4 中,我说:
_player.PD = _saveData.Load();
但是代码 3 中的返回类型发生了变化,现在是: 代码 3(已更改):
public class SaveData {
....
public IPromise<PlayerData> Load (){
......
return Promise<PlayerModelDto>.Resolved(dt);
}
}
现在我还需要写:
_player.DP = _saveData.Load();
但出现错误“无法将“IPromise(PlayerData) 转换为 PlayerData”
如何将 IPromise 范围内的结构分配给具有该结构属性的类?
谢谢。
【问题讨论】:
-
IAsyncLoad<T>的接口定义是什么?我猜有一个Result属性会返回您的T。即一个 PlayerData 结构。您可能还想查找async和await。 -
IAsynchLoad是你自己的界面吗?因为我在 .Net 库中找不到它。如果它是您自己的接口,那么您将需要向它添加一个属性以公开其 PlayerData 对象。 -
嗨@RBarryYoung 我已经编辑了我的问题 - 接口是来自 RealSeriousGames 库的 IPromise 接口,承诺统一。感谢您指出不使用实际库的问题
-
该问题缺乏足够的细节来提供有用的答案。不过有一些注意事项:当你写 "to be equal to" 时,看起来你真正想要的是一个assignment。尽管运算符相似,但为了准确表达您的问题,请不要将 equality 与 assignment 混淆,这一点非常重要。它们是两种完全不同的东西。其次,基于名称
IPromise,似乎这里引入了某种异步。如果是这种情况,那么您将不得不调整代码以适应这种情况。这里通常的 C# 习惯用法会... -
... 基于
Task,这是 .NET 中“承诺”或“未来”的等价物(在其他上下文中经常用于描述相同事物的术语),并且您将使用await运算符引入异步等待Task的解决/完成。在上面的上下文中,不清楚JsonUtility、Promise等是什么。您的问题并不是关于 C# 语言和您收到的错误消息,而是关于如何使用这些第三方类型和对象。请改进问题。
标签: c# asynchronous generics promise