我的大多数视图模型都继承自一个名为EncryptedBaseViewModel
. 此方法对 ID 进行加密,因此用户看不到数据库敏感信息。
我想创建一个 AutoMapper 映射来处理映射到EncryptedBaseViewModel
. 获取源 ID 值并将其传递给目标 SetId 方法。
视图模型类
class EncryptedBaseViewModel
{
private string _encryptedId;
public int Id {get; set; } // to be after new mapping method is developed.
public void SetId(int id)
{
_encryptedId = Encrypted(id);
}
public string GetId()
{
return _encryptedId;
}
}
自动映射器示例
我伪造了这个例子,它在映射后传递了值,因为不确定方法。 欢迎在这里提出建议。
CreateMap<AnySource, EncryptedBaseViewModel>().ForMember(vm => nameof(vm.Id), opt => opt.Ignore()).AfterMap((src,dest) => dest.SetId(src.Id));
问题
- 是否可以制作通用映射器。如果是这样,我应该在
AnySource
指定的地方放什么? - 映射是否会像任何其他特定映射一样运行?- 我想要它。
我试图避免必须为每个实体编写相同的映射,因为这可能会导致人们忘记这样做的情况。