我如何可选地强制某些派生类来实现抽象方法?

时间:2013-01-21 06:56:31

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 viewmodel

我有一个基础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

1 个答案:

答案 0 :(得分:1)

如果您想强制从MappedViewModel派生的所有类覆盖NullifyReferenceProperties方法,请将其设为abstract。如果没有,我认为最好留下virtual