c# - 在哪里保存我想在多个 ViewModel 之间共享的对象实例

标签 c# wpf mvvm architecture

我正在使用 MVVM 在 C# 和 xaml 中构建游戏。该游戏包含一个带有新游戏选项的主菜单。新的游戏按钮会将您带到玩家选择页面,您可以在其中键入两名玩家的姓名并选择是玩家对玩家游戏还是玩家对电脑游戏。然后您到达游戏屏幕并开始游戏。

我的问题是,我将持久信息保存在 Game包含 Player Player1 等属性的对象和 Player Player 2ReactiveCollection<Tile> Tiles等。我应该只做Game吗?实例静态并完成还是有更好的方法来做到这一点?

最佳答案

我会使用游戏服务。

public interface IGameService
{
    Player PlayerOne { get; set; }
    Player PlayerTwo { get; set; }
    Tiles ReactiveCollection { get; set; }
}

然后,在创建 View 模型/应用程序时,可以使用 IOC/依赖注入(inject)将您的服务解析为一个类。这样,您可以创建一个可供任何 View 模型使用的服务类的单例,但它是解耦和可测试的。然后,实现您的 IGameService 的类可以获取来自游戏的信息/数据,但是它想要这也使其灵活。您可以更改信息传递的方式,而无需更改使用该服务的 View 模型。

关于c# - 在哪里保存我想在多个 ViewModel 之间共享的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376724/

相关文章:

mvvm - 带有声明性编辑器模板的 Kendo 网格

c# - 努力理解 MVVM 架构

wpf - 如何绑定(bind)到 EllipseGeometry 的 Center 属性?

c# - 在 .NET 中编写 minidump on Unhandled Exception 有意义吗?

wpf - 将 <object property ="{StaticResource key}".../> 中的 Key 绑定(bind)到一个值

c# - ArgumentOutOfRangeException , IIS express on 2012 server

wpf - 两个 WPF 应用程序之间的通信

c# - 如何在 C# 中使用 DirectX 播放电影并添加文本覆盖

c# - 在 C#.net 中显示面板的效果

c# - 什么时候在实例类中使用私有(private)静态方法有意义