我目前使用建造者模式来构建我的MVC视图模型。
var viewModel = builder
.WithCarousel(),
.WithFeaturedItems(3),
.Build()
我遇到的问题是在需要调用异步方法时。这意味着我的构建方法必须返回 Task<HomeViewModelBuilder>
而不是 HomeViewModelBuilder
。这会阻止我链接构建方法,因为我必须使用await
等待它们。
示例方法
public async Task<HomeViewModelBuilder> WithCarousel()
{
var carouselItems = await _service.GetAsync();
_viewModel.Carousel = carouselItems;
return this;
}
现在我必须使用 await
来调用构建器方法。
await builder.WithCarousel();
await builder.WithFeaturedItems(3);
有人尝试过在构建模式中使用异步方法吗?如果有,是否可能链式调用这些方法或者将await
延迟到build方法中执行。
Task<HomeViewModelBuilder>
的扩展方法,以便您可以进行链式调用? - Sriram SakthivelBuild()
方法中吗?这样With...()
只会修改构建器的状态,记住它需要调用该方法。 - Nico Schertler