public static async Task <CoverEditorViewModel> FromAsync(CoverManager manager, ICoverParent coverParent) { var viewModel = new CoverEditorViewModel { coverId = coverParent.CoverId }; if (viewModel.coverId == null) // since cover id equal id, new object may contain null cover id. { throw new ArgumentNullException(); } else { var cover = await manager.FindAsync(viewModel.coverId); if (cover == null) { viewModel.CreateMode(); } else { viewModel.ModifyMode(cover); } } return(viewModel); }