protected async Task When <T>(IRouterAction action, Func <T, Task> operation) where T : class, IRouterAction { var convertedAction = action as T; if (convertedAction != null) { await operation(convertedAction); } }
public void Test_Actions_Are_Equal_When_Their_Parameters_Are_Equal(IRouterAction first, IRouterAction second, bool areEqual) { if (areEqual) { first.Should().Be(second); second.Should().Be(first); } else { first.Should().NotBe(second); second.Should().NotBe(first); } }
public async Task DispatchAsync(IRouterAction action) { if (action == null) { throw new ArgumentNullException(nameof(action)); } CheckInit(); await When <ShowViewModelAction>(action, async showViewModelAction => { await ShowViewModelAsync(showViewModelAction); }); await When <NavigateBackAction>(action, async navigateBackAction => { await NavigateBackAsync(navigateBackAction); }); await When <ShowDefaultViewModelAction>(action, async a => { if (Actions.Count == 0 && InitParams?.DefaultViewModelType != null && InitParams.DefaultParameters != null) { await DispatchAsync(RouterActions.ShowViewModel(InitParams.DefaultViewModelType, InitParams.DefaultParameters)); } }); }