长格式,TL;DR 下面
我目前正在使用 Zenject 开发游戏,并将我的 UI 和游戏架构设计为与 Web 应用程序非常相似,其中有IConversationRepository
-Interfaces 提供对Conversation
s 等数据的访问,方法如GetConversationById(...)
.
到目前为止,接口是由返回硬编码数据的假人实现的,但是当我进一步进行时,这必须改变。
如果这是一个 Web 应用程序,我将只使用 ORM 并让它处理对象的查询和加载,所以我的问题是 Unity / Zenject 是否也存在这种情况,如果不存在,什么时候实现数据访问的正确方法是什么?使用 Zenject。
更新(回应与@Fattie 的有益讨论)
我基本上感兴趣的是一种通用的方式来加载引用其他对象的对象,并能够查询它们。
举个例子,想象一个Conversation
包含许多ConversationItem
s 的对象,每个对象都有一个 Speaker 类型的字段Person
。然后我希望能够执行这样的操作:
var someSpeaker = personRepository.getById(100);
var conversation = conversationRepository.getById(0);
if (conversation.items[0].speaker == someSpeaker) {
// I know, in this example this behaviour could be moved
// into a method of Person to avoid the check for identity
// but I hope the idea is understandable.
}
这里重要的是,如果多个SpeechItem
s 的说话人相同,则每个引用的对象也应该相同,这使得简单地反序列化 JSON 是不可行的。
TL;DR 有没有类似 ORM 的东西可以用来实现存储库模式?如果没有,我应该如何访问数据?