我有一个基础MappedViewModel
,也就是说,它是为了与域和其他模型进行“自动”映射而构建的:
public abstract class MappedViewModel<TEntity> : ViewModel
{
public virtual void MapFromEntity(TEntity entity, bool forCreate = false)
{
Mapper.Map(entity, this, typeof(TEntity), GetType());
if (ModelPurpose == ViewModelPurpose.Create)
{
NullifyReferenceProperties();
}
}
public virtual TEntity MapToEntity()
{
return Mapper.Map<TEntity>(this);
}
protected virtual void NullifyReferenceProperties()
{
}
}
我不知何故觉得NullifyReferenceProperties
应该在基类中是抽象的,强制需要它的类来实现它,但是许多类不需要它,并且很多类在没有构建模型时需要它用于创建新实体。它现在好像是virtual
,还是有某种方法可以确定如何强制使用它?
可能是基础MappedViewModel
,其派生MappedViewModelForCreate
?
答案 0 :(得分:1)
如果您想强制从MappedViewModel
派生的所有类覆盖NullifyReferenceProperties
方法,请将其设为abstract
。如果没有,我认为最好留下virtual
。