2013-03-13 50 views
1

我正在用C#構建一個遊戲#&使用MVVM的xaml。這款遊戲包含一個帶有新遊戲選項的主菜單。新遊戲按鈕將帶您進入「玩家選擇」頁面,您可以在其中鍵入兩位玩家的名字,並選擇是玩家對玩家遊戲還是玩家對電腦遊戲。然後你到達遊戲屏幕並玩遊戲。在哪裏保留一個對象實例,我想跨多個ViewModel共享

我的問題是,我保持持續的信息中包含如Player Player1Player Player 2ReactiveCollection<Tile> Tiles等特性我應該只讓Game例如靜態和做還是有更好的方式來做到這一點一個Game對象?

+0

'static'不可測試。你的代碼會更好地分解成模塊,遊戲容器可以解決什麼對象需要什麼模塊。 – Romoku 2013-03-13 03:54:00

+0

@Romoku我不想讓它變成靜態的,但我現在想不到更好的方法。你有什麼想法? – 2013-03-13 03:55:13

+0

看看[手動依賴注入](https://github.com/ninject/ninject/wiki/Dependency-Injection-By-Hand)。這應該爲您如何處理製作模塊提供一個良好的開端。 – Romoku 2013-03-13 03:57:53

回答

0

我會使用遊戲服務。

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

然後當你的viewmodels/app被創建時,你的服務可以使用IOC /依賴注入來解析。這樣你就可以創建一個可以被任何視圖模型使用的服務類的單例,但它可以解耦並且可測試。然後,實現IGameService的類可以獲得遊戲中的信息/數據,但是它也是靈活的。您可以更改信息的傳送方式,而無需更改使用該服務的視圖模型。

相關問題