我有兴趣发现开发人员用来将他们的视图从他们的领域模型中抽象出来的不同方式。
目前,我为要在视图中使用的每个模型创建一个 ViewModel,并且我有一个转换器IConverter<TIn,TOut>
来执行此操作。
我注意到的是,对于包含其他类型集合的类型,我为层次结构中的每种类型都有一个 ViewModel,而转换器使用其他转换器来构建最终的 ViewModel。
举个例子:
假设我有这个使用 FluentNHibernate 构建的域模型结构:
public class User
{
[...]
public virtual IEnumerable<QuestionSubscription> QuestionSubscriptions{get;set;}
}
public class QuestionSubscription
{
public virtual bool VerifiedSubscription{get;set;}
public virtual Question Question{get;set;}
}
鉴于我的工作方式,我将拥有 3 个 ViewModel 来支持这一点,并且由于我使用我的自定义转换器,因此会有一个从用户到问题的转换链:(为简洁起见,缩短了一些名称)
_userToUserViewModelConverter.Convert(userModel)
|
V
_qSubscriptionToViewModelConverter.Convert(userModel.QSubscriptions)
|
V
_questionToViewModelConverter.Convert(QSubscription.Question)
这很好用,我只是想知道其他管理方式。
我的第一个问题是,你认为我不让我的领域模型触及我的观点采取了正确的方法吗?
其次,假设问题 1 为“是”,您会使用相同的方法让转换器执行其他转换器还是在控制器中一次执行每个转换器?