我一直在努力下定决心如何在我的 MVC 解决方案中处理 ViewModel。我认为,在阅读了不同的帖子和博客之后,最好的方法是让构建器实现接口,然后将它们注入控制器本身。
使用自动映射器,我将在每个构建器的实现中进行实体和视图模型之间的映射,并且控制器将保持非常薄。
所以我创建了这个界面
public interface IViewModelBuilder<TViewModel, TEntity>
{
TViewModel Build(TEntity entity);
}
目前我忽略了关于使它们成为协变和逆变的警告(不知道是否需要这样做)。
对于特定的 ViewModel,虽然我需要从两个不同的服务中获取两个实体,所以我不知道应该传递什么类型的参数。
public class ConcreteVMBuilder: IViewModelBuilder<concreteVM, ????>
也许那个界面不正确?
我知道合并控制器中获取的两个实体不是一个干净的解决方案,对吧?
如果有人可以帮我一把,我将非常感激