MVVM+ReduxでWPFアプリをC#+F#で作成


動機

  • Reduxというものを知り、WPFアプリ作成に使えるかどうか試したい
  • C#とF#を両方使ってみたい

環境、使用したライブラリ・フレームワークなど

参考にしたのは、こちらのストップウォッチアプリです。

ソース

感想

  • StateをF#のレコードにしたおかげで、前のStateから次のStateを作る部分がすっきり書けた。C#では、こうは簡単にはできない。
Reducers.fs
static member private TimerReducer(previousState : ApplicationState, action : TimerAction) : ApplicationState = 
        { previousState with NowSpan = action.Now - previousState.StartTime
                             Now = action.Now }
  • MVVMではMの部分をどうするか迷うのだが、Reducer、Store、State等に分けることで、役割がはっきりした。VMは、Dispatchと監視・反映を行う。