2013-05-01 98 views
1

我有一個登錄屏幕的應用程序,相當典型的場景,我猜。在用戶獲得認證之後,我需要以某種方式存儲他,因爲我將不得不根據他的權限採取行動等等。當然,還會有更多屬性存儲以及。如何在WPF中存儲當前登錄的用戶

什麼是認爲best實現方式這個?我目前正在評估兩個選項:

1)在我的ViewModels

2)使用App.Current.Properties並將其存儲有使用單(或靜態屬性),並說明。那麼也許可以使用一些靜態幫手的方法來更容易和一致地檢索用戶在整個應用程序

或者也許有其他的選擇來考慮?感謝您的建議。

+0

看來你正在談論的是在會話期間將用戶存儲在內存中嗎? 如果是這樣,爲什麼不創建一個包含您需要的所有屬性的User類,並在主視圖模型中存儲對此用戶類的實例(可以是單例)的引用。您可以從需要訪問您的用戶屬性的任何其他視圖模型向主視圖模型發送消息,並且主視圖模型將發回消息並引用該用戶類的該實例... – 2013-05-01 21:39:35

+0

@DeanKuga,也許更具體的例子 - 在asp.net中,你將使用會話來存儲用戶特定的數據。然後,您只需引用這些會話變量即可從單個頁面檢索所需的任何內容。什麼是WPF的替代方案?單元測試在單元測試中是有問題的,所以我儘量避免它們,儘管我開始相信這是不可能的。我想有時候最簡單的解決方案是最好的解決方案... – walther 2013-05-01 22:06:13

+0

我認爲爲這樣的事情添加一個依賴於MEF是一個矯枉過正的問題,我不明白爲什麼它必須是單身人士,所以我只是創建在登錄時的User類的一個實例,並根據需要發送對其他視圖模型的引用...查看關於視圖模型間通信的此答案:http://stackoverflow.com/a/14361984/229930 – 2013-05-01 22:21:11

回答

2

使用MEF和[導入]已驗證的用戶界面到您的視圖模型中。通過這種方式,您可以將全局資源用於對象和框架,而不是您的代碼負責管理資源。這比任何建議的解決方案引入的耦合少,這些優勢將有助於單元測試。

Prism framework for Silverlight基於MEF,應該適用於WPF。

MEF是依賴注入。您可以通過將所需接口映射到具體類的實例來讓MEF負責解決依賴關係。您可以使用設置和檢索身份的方法創建IAuthenticatedUser接口。您創建一個模型類來實現接口並將其導出到MEF。您的登錄ViewModel和任何其他需要標識導入界面的ViewModel。當創建它們時,MEF將視圖模型連接到實現類的實例。您的ViewModels根據需要使用該界面。

+0

我很好奇這件事。我不是(真的)懶惰,但也許你可以提供索姆鏈接與你的答案?:) – Silvermind 2013-05-01 17:55:28

+0

@ silvermind--我用鏈接擴展了我的答案 – antlersoft 2013-05-01 18:00:25

+0

糾正我,如果我錯了,從來沒有實際使用過MEF,但不是MEF像依賴注入那樣的東西嗎?你指定了一些依賴關係,它「神奇地」把事情正確地連接起來。在我的情況下會是什麼樣子?用戶進來,登錄並...?我怎樣才能從ViewModel獲取這些數據?使用MEF進行x點擊?我真的會'出口'?對不起,可能是一個愚蠢的問題,但在過去幾周裏,我已經對太多架構模式進行了一些研究,我的腦袋很可能很快就會爆炸。我會很感激一些更具體的例子。謝謝。 – walther 2013-05-01 19:53:36

相關問題